Форум » GUI » Вопросы новичка [MiniGUI] » Ответить

Вопросы новичка [MiniGUI]

Dima: MAIN окно не получило фокус ввода при запуске , почему ? Пример самодостаточный. [pre2] #include "minigui.ch" REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_LANG_RUWIN REQUEST HB_LANG_RUWIN REQUEST HB_LANG_RU866 Func Main() DEFINE WINDOW Form_0 AT 321 , 491 WIDTH 558 HEIGHT 175 TITLE "Почему окно не в фокусе при запуске ?" ; MAIN NOSIZE NOSYSMENU TOPMOST ON INIT {|| MdiMain()} DEFINE BUTTONex Button_1 ROW 32 COL 424 WIDTH 110 HEIGHT 28 CAPTION "Вход" ACTION { || ret:=.t., DoMethod("Form_0","Hide") , DoMethod("Form_1","show") } FONTBOLD .t. END BUTTONex DEFINE BUTTONex Button_2 ROW 71 COL 424 CAPTION "Отмена" ACTION { || DoMethod("Form_0","Release") } WIDTH 110 HEIGHT 28 FONTBOLD .t. END BUTTONex END WINDOW Form_0.Activate Form_0.Setfocus return nil ***************************** Func Mdimain() DEFINE WINDOW Form_1 at 0,0 ; WIDTH 200 HEIGHT 300 TITLE "MDI windows" ; MDI ; NOSHOW END WINDOW Form_1.Center Form_1.Activate Form_0.Release return [/pre2]

Ответов - 289, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

rvu: Dima пишет: смирись и копай Копаю, копаю... Никак не найду, как меняются цвета данных в активном поле в DEFINE TEXTBOX Там белый на синем по умолчанию видимо?

Dima: есть справка вообще то и примеры вот навскидку C:\MiniGUI\SAMPLES\Advanced\ComboSearchGrid\combosearchgrid.prg

rvu: Dima пишет: есть справка вообще то и примеры В справке ничего не нашел. А про примеры, мы точно об одном и том же? Я не про BACKCOLOR и FONTCOLOR в TEXTBOX.


Dima: rvu Про это речь ? DEFINE TEXTBOX &( textboxname ) ROW nR Col nC WIDTH nW HEIGHT 24 ONGOTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", RED ) ONLOSTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", GRAY ) END TEXTBOX

Haz: Dima пишет: ONGOTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", RED ) ONLOSTFOCUS SetProperty( ThisWindow.Name, textboxname, "FontColor", GRAY ) Все верно, но можно проще если вместо TEXTBOX использовать GETBOX как более "продвинутый" контрол ввода. Там эти цвета встроены по умолчанию [pre2] [ BACKCOLOR <anBackColor> ] // * or <anBackColor, anReadOnlyBackColor, anAciveBackColor> [/pre2]

SergKis: Haz пишет [ BACKCOLOR <anBackColor> ] // * or <anBackColor, anReadOnlyBackColor, anAciveBackColor> или новыми командами SET GETBOX FOCUS BACKCOLOR [TO <backcolor>] SET GETBOX FOCUS FONTCOLOR TO <fontcolor> тогда anAciveBackColor не используем

rvu: Dima пишет: Про это речь ? Понятно. Мы о разном. Это работает, если на поле мышкой кликать. А если по полям бегать клавишами Tab или Enter, то активное поле имеет цвет белый на синем. И как эти цвета менять пока не нашел.

rvu: Haz пишет: GETBOX Какой там курсор страшный. А можно его размерами управлять? И можно ли его вообще убрать? Наверное, можно. Пошел искать...

rvu: Посмотрел образцы курсоров (мышиных). А можно его вообще убрать простым способом? Чтобы при вождении мышью вообще ничего не было видно (в смысле, курсор).

Петр: rvu пишет: А можно его вообще убрать простым способом? Добавить в событие ON MOUSEHOVER | ON MOUSEMOVE (для control/window соответственно) вызов FileCursor('')

rvu: Петр пишет: ON MOUSEMOVE Открываю окно, развернутое на весь экран. Если курсор на программе стоит, то это срабатывает. А если он после открытия откуда-то пришел, то вполне себе бегает.

Петр: rvu пишет: Если курсор на программе стоит, то это срабатывает. А если он после открытия откуда-то пришел, то вполне себе бегает. И что? Читайте документацию WinAPI (в данном случае SetCursor): FileCursor('') - это эквивалент SetCursor( NULL ). И дальше уже сами определяйтесь, возможно придется обрабатывать события ON GOTFOCUS / ON LOSTFOCUS, откуда я знаю, что и откуда к вам приходит.

Петр: rvu пишет: А можно его вообще убрать простым способом? Чтобы при вождении мышью вообще ничего не было видно (в смысле, курсор). Кстати такое поведение не является типичным для програм Windows, сответственно никакой волшебной функции по гашению курсора в MiniGUI нет. И, надеюсь, не будет.

rvu: Петр пишет: возможно придется обрабатывать события ON GOTFOCUS / ON LOSTFOCUS Наверное. Но вообще, спасибо, за подробное объяснение!

SergKis: rvu пишет А можно его вообще убрать простым способом? Чтобы при вождении мышью вообще ничего не было видно (в смысле, курсор). Возможно речь о GetBox-ах в состоянии ReadOnly и перевод в рабочее состояние на время ввода ?

rvu: Нет, тут идея другая была. Захотели подключить второй монитор к компьютеру, как информационное табло для клиентов компании. Типа, мы что-нибудь наберем и пусть оно на втором мониторе отображается, пока не поменяем. Идея любопытная, но я имею опыт работы с несколькими мониторами, постоянно курсор на другой монитор убегает. Ну и что он будет бегать перед клиентами, надо бы его как минимум из видимости убрать.

SergKis: rvu пишет Ну и что он будет бегать перед клиентами, надо бы его как минимум из видимости убрать. Так может разделить окна: 1 - для основного монитора с курсором 2 - для др. мониторов с Getbox ReadOnly Ввели в 1-м данные, отобразили во 2-м. Если это возможно разделить, не имел счастья раб. с неск. мониторами

rvu: Курсор-то по всему рабочему столу ходит. Я не то что окна, я программы разделил, одна для ввода, другая для показа.

Петр: rvu пишет: Курсор-то по всему рабочему столу ходит. Ну тогда вам сюда Дополните c_cursor.c #include "hbapiitm.h" extern HB_EXPORT BOOL Array2Rect( PHB_ITEM aRect, RECT * rc ); extern HB_EXPORT PHB_ITEM Rect2Array( RECT * rc ); HB_FUNC( CLIPCURSOR ) { RECT rc; if( Array2Rect( hb_param( 1, HB_IT_ANY ), &rc ) ) hb_retl( ClipCursor( & rc ) ? HB_TRUE : HB_FALSE ); else hb_retl( ClipCursor( NULL ) ? HB_TRUE : HB_FALSE ); } HB_FUNC( GETCLIPCURSOR ) { RECT rc; hb_retl( GetClipCursor( &rc ) ? HB_TRUE : HB_FALSE ); hb_itemParamStoreRelease( 1, Rect2Array( &rc ) ); } и перекомпилируйте библиотеку. Пример использования #include "minigui.ch" Function Main local oldRect := {0,0,0,0} local newRect := {0,0,0,0} DEFINE WINDOW Win_1 ; CLIENTAREA 400, 400 ; TITLE 'Hello World!' ; WINDOWTYPE MAIN ; ON INIT ; ( ; GetClipCursor( @oldRect ), ; GetWindowRect( ThisWindow.Handle, @newRect), ; ClipCursor( @newRect ) ; ) ; ON RELEASE ClipCursor( @oldRect ) END WINDOW Win_1.Center Win_1.Activate Return Nil

Петр: rvu пишет: Захотели подключить второй монитор к компьютеру, как информационное табло для клиентов компании. И еще к вам один вопрос - пользуетесь ли вы встроенной в MiniGUI поддержкой работы с несколькими мониторами, насколько она удобна или неудобна?



полная версия страницы