Автор | Сообщение |
|
| |
Пост N: 4905
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.06.15 10:51. Заголовок: Вопросы новичка [MiniGUI]
MAIN окно не получило фокус ввода при запуске , почему ? Пример самодостаточный. #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
|
|
|
Ответов - 289
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|
| moderator
|
Пост N: 1492
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.04.19 11:38. Заголовок: SergKis пишет: доб..
SergKis пишет: цитата: | добавить в языковый массив _HMG_MESSAGE [10] := 'Attention' _HMG_MESSAGE [11] := 'Information' _HMG_MESSAGE [12] := 'Stop' и применить в Msg...(), Hmg_Alert() |
| Благодарю за подсказку Сделал
|
|
|
|
| |
Пост N: 185
Зарегистрирован: 05.11.05
|
|
Отправлено: 15.11.19 07:45. Заголовок: rvu пишет: SET INTE..
rvu пишет: цитата: | SET INTERACTIVECLOSE OFF - у окон CHILD это работает, а у окна MAIN продолжает быть активным, разве что при нажатии на него выдает, что так нельзя закрыть программу. |
| А как сделать, чтобы вместо стандартного окна Стоп выполнялась моя собственная процедура?
|
|
|
|
| |
Пост N: 187
Зарегистрирован: 05.11.05
|
|
Отправлено: 26.11.19 15:48. Заголовок: Такой вопрос: Делаю ..
Такой вопрос: Делаю LISTBOX, хочу чтобы при нажатии на отдельно стоящую кнопку BUTTON его содержимое менялось. Как это сделать? Первая мысль была, что-то вроде: SetProperty(ThisWindow.Name, "List_1" , "ITEMS", aList0), но так это не работает. Дальше мысли вообще менять окно, но как-то это муторно, наверное есть простой способ, который я не нашел.
|
|
|
|
| |
Пост N: 1505
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.11.19 16:27. Заголовок: rvu пишет: наверно..
rvu пишет: цитата: | наверное есть простой способ, который я не нашел. |
| Удалить все элементы form_1.ListBox_1.DeleteAllItems и добавить по одному новые form_1.ListBox_1.AddItem( 'new item1' ) ) ... form_1.ListBox_1.AddItem( 'new item2' ) ) ...
|
|
|
|
| постоянный участник
|
Пост N: 6521
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.11.19 20:28. Заголовок: rvu пишет: хочу что..
rvu пишет: цитата: | хочу чтобы при нажатии на отдельно стоящую кнопку BUTTON его содержимое менялось. Как это сделать? |
| На кнопку вешаешь вызов: ACTION {|| UpdateList2() } И ставишь готовую функцию свою (в качестве примера считывание файлов по маске): FUNCTION UpdateList2() LOCAL aDimDir, nI, cFile // Считываю массив DBF-файлов ... aDimDir := Directory( M->cPubPathTo + "*.dbf" ) aDirTo := {} IF Len( aDimDir ) > 0 FOR nI := 1 TO Len( aDimDir ) cFile := aDimDir[ nI, 1 ] AAdd( aDirTo, cFile ) NEXT ENDIF FormaMain.List_2.DeleteAllItems() IF Len(aDirTo)>0 FOR nI:=1 TO Len(aDirTo) FormaMain.List_2.AddItem(ADirTo[nI]) Next ENDIF RETURN Nil
|
|
|
|
| |
Пост N: 1506
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.11.19 21:12. Заголовок: Andrey пишет: Forma..
Andrey пишет: цитата: | FormaMain.List_2.DeleteAllItems() IF Len(aDirTo)>0 FOR nI:=1 TO Len(aDirTo) FormaMain.List_2.AddItem(ADirTo[nI]) Next ENDIF |
| Можно проще двумя строчками FormaMain.List_2.DeleteAllItems() Aeval( aDirTo, { ¦e¦ FormaMain.List_2.AddItem(e)}) Да и всю эту функцию можно в этот Aeval засунуть. Расписывать по действиям конечно нагляднее, но не всегда оптимально.
|
|
|
|
| постоянный участник
|
Пост N: 6523
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.11.19 21:29. Заголовок: Haz пишет: Можно пр..
Haz пишет: цитата: | Можно проще двумя строчками |
| Согласен. Это конечно лучше. Свой код писал ещё в 2016, когда начинал разбираться с МиниГуи. Только проверку нужно на нулевой массив сделать.
|
|
|
|
| |
Пост N: 1507
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.11.19 21:31. Заголовок: Andrey пишет: Тольк..
Andrey пишет: цитата: | Только проверку нужно на нулевой массив сделать. |
|
не нужно цикл сам проверит. Как уже добавил, я бы всю функцию( кроме удаления) в один вызов аевал завернул после отладки логики, но это не критично. Просто в большом проекте объемный код затрудняет понимание в двльнейшем. Так что на любителя
|
|
|
|
| |
Пост N: 188
Зарегистрирован: 05.11.05
|
|
Отправлено: 26.11.19 21:57. Заголовок: Спасибо всем откликн..
Спасибо всем откликнувшимся! Заработало.
|
|
|
|
| |
Пост N: 189
Зарегистрирован: 05.11.05
|
|
Отправлено: 27.11.19 09:57. Заголовок: Я как-то про UTF8 уж..
Я как-то про UTF8 уже спрашивал. С русским понятно: gfilatov2002 пишет: цитата: | hb_Translate( cText, "UTF8", "CP1251" ) |
| А как всякие знаки показывать? Стрелочки, например?
|
|
|
|
| постоянный участник
|
Пост N: 6527
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.11.19 10:04. Заголовок: rvu пишет: А как вс..
rvu пишет: цитата: | А как всякие знаки показывать? Стрелочки, например? |
| Смотри пример MiniGUI\SAMPLES\BASIC\ScreenMode Там кнопка со значком папки.
|
|
|
|
|
| |
Пост N: 190
Зарегистрирован: 05.11.05
|
|
Отправлено: 27.11.19 11:10. Заголовок: Andrey пишет: Там к..
Andrey пишет: цитата: | Там кнопка со значком папки. |
| Да, все гениальное просто, и UTF даже не нужна. А дальше хотелось поместить на кнопку надпись со стрелкой. А это разные шрифты. Так можно? Там же фонт сразу для всей кнопки задается.
|
|
|
|
| постоянный участник
|
Пост N: 6528
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.11.19 11:36. Заголовок: rvu пишет: А дальше..
rvu пишет: цитата: | А дальше хотелось поместить на кнопку надпись со стрелкой. А это разные шрифты. Так можно? Там же фонт сразу для всей кнопки задается. |
| Я не знаю, можно ли задать 2 шрифта на одной кнопке, но на кнопке можно задать иконку и текст одновременно. Это самый простой и лучший вариант.
|
|
|
|
| |
Пост N: 191
Зарегистрирован: 05.11.05
|
|
Отправлено: 28.11.19 11:40. Заголовок: Andrey пишет: на кн..
Andrey пишет: цитата: | на кнопке можно задать иконку и текст одновременно. Это самый простой и лучший вариант. |
| Могут быть проблемы, если пользователю разрешено менять размер шрифта. Собственно, я в сторону UTF8 и смотрел, чтобы можно было писать любые знаки в одной строке не задумываясь о их совместимости.
|
|
|
|
| постоянный участник
|
Пост N: 6529
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.11.19 12:00. Заголовок: rvu пишет: Могут бы..
rvu пишет: цитата: | Могут быть проблемы, если пользователю разрешено менять размер шрифта. |
| Задай автоматом максимальный шрифт на кнопках и запрети юзеру это делать. Как это сделать смотри пример MiniGUI\SAMPLES\BASIC\ButtonEx_DynamicMenu
|
|
|
|
| |
Пост N: 192
Зарегистрирован: 05.11.05
|
|
Отправлено: 29.11.19 12:45. Заголовок: Можно ухватить мышко..
Можно ухватить мышкой окно за край и менять его размер. А можно ли соответственно менять LISTBOX? Т.е. чтобы он при расширении окна тоже расширялся или сужался?
|
|
|
|
| постоянный участник
|
Пост N: 2970
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.19 13:14. Заголовок: rvu пишет А можно ли..
rvu пишет цитата: | А можно ли соответственно менять LISTBOX? Т.е. чтобы он при расширении окна тоже расширялся или сужался? |
| Поищите в примерах ON SIZE, будет много вариантов, к примеру такой BASIC\DirSelect\... Меняте от размера клиентской части окна размеры ListBox
|
|
|
|
| |
Пост N: 193
Зарегистрирован: 05.11.05
|
|
Отправлено: 29.11.19 14:21. Заголовок: SergKis пишет: к пр..
SergKis пишет: цитата: | к примеру такой BASIC\DirSelect\... |
| Здорово!
|
|
|
|
| |
Пост N: 219
Зарегистрирован: 05.11.05
|
|
Отправлено: 11.02.20 16:22. Заголовок: В окне отображается ..
В окне отображается какой-то текст, допустим, LABEL-ами. Хочу что-то из него скопировать, но нет, текст мышкой даже не выделяется. То же с окнами ошибок, что совсем неудобно. А можно сделать, чтобы выделялся и копировался?
|
|
|
|
| постоянный участник
|
Пост N: 3053
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.02.20 21:35. Заголовок: rvu А можно сделать,..
rvu цитата: | А можно сделать, чтобы выделялся и копировался? |
| Самое простое для label назначить [ <dummy2: ACTION, ON CLICK, ONCLICK> <action> ] ; [ ON DBLCLICK <dblclick> ] ; вызов меню, как в примере Advanced\App_OopReport или см. другие примеры с меню Скрытый текст
[pre2] *-----------------------------------------------------------------------------* FUNCTION _ShowFormContextMenu( cForm, nRow, nCol, lCenter ) *-----------------------------------------------------------------------------* LOCAL xContextMenuParentHandle := 0, hWnd, aRow DEFAULT nRow := -1, nCol := -1, lCenter := .F. If .Not. _IsWindowDefined(cForm) xContextMenuParentHandle := _HMG_xContextMenuParentHandle Else xContextMenuParentHandle := GetFormHandle(cForm ) Endif If xContextMenuParentHandle == 0 MsgMiniGuiError("Context Menu is not defined. Program terminated") EndIf lCenter := lCenter .or. ( nRow == 0 .or. nCol == 0 ) hWnd := GetFormHandle(cForm) If lCenter If nCol == 0 nCol := int( GetWindowWidth (hWnd) / 2 ) EndIf If nRow == 0 nRow := int( GetWindowHeight(hWnd) / 2 ) EndIf ElseIf nRow < 0 .or. nCol < 0 aRow := GetCursorPos() nRow := aRow[1] nCol := aRow[2] EndIf TrackPopupMenu ( _HMG_xContextMenuHandle , nCol , nRow , xContextMenuParentHandle ) RETURN Nil *-----------------------------------------------------------------------------* STATIC FUNC MenuReport( oWnd, aTxt, lPost, nRow, nCol, lCenter, nZeroLen ) *-----------------------------------------------------------------------------* LOCAL cWnd := oWnd:Name LOCAL nItm := 0, cNam, cImg, i LOCAL lDis := .F. LOCAL bAct := {|| nItm := Val(This.Name) } Default nZeroLen := 4, lPost := .T. Default aTxt := { ; 'Column report FIRST', ; 'Column report LAST ', ; 'Column report AGE ', ; 'Column report STATE', ; 'Column report CITY ', ; 'Column report STATE + Left(LAST, 1)', ; 'Column report CITY + Left(LAST, 1) ' ; } DEFINE CONTEXT MENU OF &cWnd For i := 1 To len(aTxt) cNam := StrZero(i, nZeroLen) If i > 9 cImg := Nil Else cImg := 'n' + hb_ntos(i) EndIf _DefineMenuItem( aTxt[ i ], bAct, cNam, cImg, .F., lDis, , , , .F., .F.) NEXT SEPARATOR MENUITEM 'Exit' ACTION NIL END MENU _ShowFormContextMenu(cWnd, nRow, nCol, lCenter ) DEFINE CONTEXT MENU OF &cWnd END MENU DO EVENTS If nItm > 0 .and. lPost oWnd:PostMsg(nItm) EndIf RETURN nItm
| Но проще исп. EditBox пример Advanced\LetoDbf\Client @ y, x EDITBOX Edit WIDTH w HEIGHT h VALUE '' ; FONT "Courier New" Size 12 READONLY ... :Event(21, {| | This.Edit.Value := hb_memoread('_Msglog.txt') }) ... Будет работать посимвольное выделение `
|
|
|
Ответов - 289
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|