Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
gfilatov2002
|
| moderator
|
Пост N: 1309
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.06.18 17:46. Заголовок: SergKis пишет: при ..
SergKis пишет: цитата: | при потере фокуса по кнопке или клику по main окну, modal должна убраться. |
| Работает немного по-другому: модальное окно закрывается при вызове после него любого дочернего окна. Если свойство FlashExit у модального окна не определено, то оно не даст переключиться на новое окно и будет "мигать"
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1887
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.18 18:09. Заголовок: gfilatov2002 пишет м..
gfilatov2002 пишет цитата: | модальное окно закрывается при вызове после него любого дочернего окна |
| Принимает только след. модальное wModal2 (wChild не проходит) и wModal не уходит, остается. С FlashExit, думалось, будет работать, как костыль на modal -> child, т.е. modal -> modlal2, при потере фокуса modal2 уходит, как child с ON LOSTFOCUS ThisWindow.Release. Исп. это при замене COMBOBOX на окно с TsBROWSE
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1888
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.18 18:11. Заголовок: PS Не ту кнопку нажа..
PS Не ту кнопку нажал. Текст примера Скрытый текст
#include "Minigui.ch" ************* function MAIN ************* DEFINE WINDOW wMain AT 0 , 0 WIDTH 400 HEIGHT 300 TITLE "Main" MAIN DEFINE BUTTONEX ButtonEX_1 ROW 225 COL 79 WIDTH 100 HEIGHT 30 CAPTION "Modal" ICON NIL ACTION MODAL() END BUTTONEX DEFINE BUTTONEX ButtonEX_2 ROW 225 COL 219 WIDTH 100 HEIGHT 30 CAPTION "&Quit" ICON NIL ACTION ThisWindow.release END BUTTONEX END window wMain.center wMain.activate return NIL ************************* static function MODAL() ************************* DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL _HMG_aFormFocused [ This.Index ] := .T. DEFINE BUTTONEX ButtonEX_1 ROW 20 COL 40 WIDTH 100 HEIGHT 30 CAPTION "Modal 2" // CAPTION "Child" ICON NIL ACTION MODAL2() // ACTION CHILD() END BUTTONEX END window wModal.center wModal.activate return NIL ************************* static function MODAL2() ************************* DEFINE WINDOW wModal2 AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Modal 2" MODAL END window wModal2.center wModal2.activate return NIL ************************* static function CHILD() ************************* DEFINE WINDOW wChild AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Child" CHILD END window wChild.center wChild.activate return NIL
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1310
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.06.18 20:04. Заголовок: SergKis пишет: Прин..
SergKis пишет: цитата: | Принимает только след. модальное wModal2 (wChild не проходит) |
| У меня работает с wChild такой пример (немного переработанный): цитата: | #include "Minigui.ch" ************* function MAIN ************* DEFINE WINDOW wMain AT 0 , 0 WIDTH 400 HEIGHT 300 TITLE "Main" MAIN DEFINE BUTTONEX ButtonEX_1 ROW 225 COL 79 WIDTH 100 HEIGHT 30 CAPTION "Modal" ICON NIL ACTION MODAL() END BUTTONEX DEFINE BUTTONEX ButtonEX_2 ROW 225 COL 219 WIDTH 100 HEIGHT 30 CAPTION "&Quit" ICON NIL ACTION ThisWindow.release END BUTTONEX END window wMain.center wMain.activate return NIL ************************* static function MODAL() ************************* DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL _HMG_aFormFocused [ This.Index ] := .T. DEFINE BUTTONEX ButtonEX_1 ROW 20 COL 40 WIDTH 100 HEIGHT 30 // CAPTION "Modal 2" CAPTION "Child" ICON NIL // ACTION MODAL2() ACTION CHILD() END BUTTONEX END window wModal.center wModal.activate return NIL ************************* static function MODAL2() ************************* DEFINE WINDOW wModal2 AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Modal 2" MODAL END window wModal2.center wModal2.activate return NIL ************************* static function CHILD() ************************* if IsWindowDefined(wChild) doMethod("wChild", "HIDE") doMethod("wChild", "SHOW") doMethod("wChild", "SETFOCUS") return NIL endif DEFINE WINDOW wChild AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Child" CHILD ; NOMAXIMIZE NOMINIMIZE define timer t_1 interval 50 action doMethod("wChild", "SETFOCUS") once END window wChild.center activate window wChild NOWAIT DO MESSAGELOOP return NIL |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1889
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.18 20:54. Заголовок: gfilatov2002 пишет р..
gfilatov2002 пишет цитата: | работает с wChild такой пример |
| Работает Вот тот же пример с костылем (child окно на модал и на main) Скрытый текст
#include "Minigui.ch" ************* function MAIN ************* SET OOP ON DEFINE WINDOW wMain AT 0 , 0 WIDTH 400 HEIGHT 300 TITLE "Main" MAIN DEFINE BUTTONEX ButtonEX_1 ROW 225 COL 79 WIDTH 100 HEIGHT 30 CAPTION "Modal" ICON NIL ACTION MODAL() END BUTTONEX DEFINE BUTTONEX ButtonEX_2 ROW 225 COL 219 WIDTH 100 HEIGHT 30 // CAPTION "&Quit" CAPTION "Child" ICON NIL ACTION CHILD2( This.Name ) // ACTION ThisWindow.release END BUTTONEX END window wMain.center wMain.activate return NIL ************************* static function MODAL() ************************* DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL // _HMG_aFormFocused [ This.Index ] := .T. DEFINE BUTTONEX ButtonEX_1 ROW 20 COL 40 WIDTH 100 HEIGHT 30 // CAPTION "Modal 2" CAPTION "Child" ICON NIL // ACTION MODAL2() ACTION CHILD2( This.Name ) END BUTTONEX END window wModal.center wModal.activate return NIL ************************* static function MODAL2() ************************* DEFINE WINDOW wModal2 AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Modal 2" MODAL END window wModal2.center wModal2.activate return NIL ************************* static function CHILD() ************************* if IsWindowDefined(wChild) doMethod("wChild", "HIDE") doMethod("wChild", "SHOW") doMethod("wChild", "SETFOCUS") return NIL endif DEFINE WINDOW wChild AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Child" CHILD ; NOMAXIMIZE NOMINIMIZE define timer t_1 interval 50 action doMethod("wChild", "SETFOCUS") once END window wChild.center activate window wChild NOWAIT DO MESSAGELOOP return NIL ************************* static function CHILD2( cFocusName ) ************************* LOCAL oParent := ThisWindow.Object LOCAL lM LOCAL hM If oParent:Type == 'M' lM := _HMG_IsModalActive hM := _HMG_ActiveModalHandle _HMG_IsModalActive := .F. _HMG_ActiveModalHandle := 0 Endif DEFINE WINDOW wChild AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Child" CHILD ; NOMAXIMIZE NOMINIMIZE END window wChild.center wChild.activate If oParent:Type == 'M' _HMG_IsModalActive := lM _HMG_ActiveModalHandle := hM Endif oParent:SetFocus(cFocusName) return NIL
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1890
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.18 21:09. Заголовок: PS в CHILD2 добавить..
PS в CHILD2 добавить (обработка потери фокуса) DEFINE WINDOW wChild AT 0 , 0 WIDTH 100 HEIGHT 100 TITLE "Child" CHILD ; NOMAXIMIZE NOMINIMIZE ; ON LOSTFOCUS do_Obj(This.Handle, {|ow| ow:Release() })
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1311
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.06.18 21:37. Заголовок: SergKis пишет: тот ..
SergKis пишет: Так каков вердикт? Нужен этот новый clause FlashExit или достаточно костыля
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1891
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.18 21:52. Заголовок: gfilatov2002 пишет Н..
gfilatov2002 пишет цитата: | Нужен этот новый clause FlashExit или достаточно костыля |
| Не понимаю, надо осознать . Народ подтянуть. Если активировать в примере строку DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL // _HMG_aFormFocused [ This.Index ] := .T. модальное окно уберется, с др. стороны есть др. способы убрать модал. Я
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5919
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.06.18 22:13. Заголовок: SergKis пишет: Не п..
SergKis пишет: цитата: | Не понимаю, надо осознать . Народ подтянуть. |
| Читаю как про инопланетян... Для чего это хоть делаете ? На пальцах объясните, по простому, по русски...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1892
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.18 22:33. Заголовок: Andrey Работаем на ..
Andrey Работаем на модальном окне, заменяем combobox модальным окном с тсб списком выбора (без заголовков, с Х). Все работает, кроме клика за пределами окна-списка (только Х завершает). Child окно из под модального - ку-ку. На нем можно делать lostfocus. Вот вокруг запуска окна child из под модального и сыр-бор. С FlashExit child запускается, модал убирается ВСЕГДА. С костылем, child запускается, модал остается (сам убирай). Клик за пределами child и ON LOSTFOCUS окно child убирает.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1893
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.18 22:58. Заголовок: PS в CHILD2 добавит..
PS в CHILD2 добавить (блокировку X окна wModal), иначе валится при его нажатии и наличии окна child ************************* static function CHILD2( cFocusName ) ************************* LOCAL oParent := ThisWindow.Object LOCAL lM LOCAL hM oParent:Action := .F. If oParent:Type == 'M' ... Endif oParent:Action := .T. oParent:SetFocus(cFocusName) return NIL и в функцию добавить ************************* static function MODAL() ************************* DEFINE WINDOW wModal AT 0, 0 WIDTH 200 HEIGHT 200 TITLE "Modal" MODAL ; ON INTERACTIVECLOSE (This.Object):Action ...
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1312
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.07.18 10:20. Заголовок: Выпущена новая сборк..
Выпущена новая сборка 18.06 для BCC 5.51 для компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.06-setup.exe Рекомендуется к использованию Также имеются в наличии готовые сборки для: - MinGW 8.1.0 32-bit для Harbour 3.2.0dev; - MinGW 8.1.0 64-bit для Harbour 3.4.0dev; - MS VisualC 2017 32-bit для Harbour 3.2.0dev; - Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.2.0dev. Благодарю за Ваше внимание и поддержку P.S. Доступно зеркало домашней страницы по адресу http://hmgextended.org P.S. 2 Выпуск новых сборок приостановлен на неопределенное время по материальным причинам
|
|
|
Haz
|
| |
Пост N: 1268
Зарегистрирован: 20.02.11
|
|
Отправлено: 04.07.18 13:53. Заголовок: SergKis пишет: Рабо..
SergKis пишет: цитата: | Работаем на модальном окне, заменяем combobox модальным окном с тсб списком выбора |
| Сергей, я свой вариант на классе допиливаю потихоньку . У меня с заголовками, но без [X] все работает. В своих проектах заменяю сомбик везде. Для вызова используется oCol:PrevEdit() где обрабатывается примерно такой код CASE cCol == "ID_CURR" SQL("T1", "SELECT * FROM CNT_CUR") // Это из под ADS , в стандарте тупо меняется на USE cBase ALIAS 'T1' T1->(OrdSetFocus("NAME")) xLbx := LBX():New() // Создать объект xLbx:cAlias := "T1" // Какой алиас в нем показать xLbx:cRetField := "ID" // какое поле вернуть xLbx:aHeaders := {'A', 'B'} // как назвать заголовки xLbx:aWidth := {35, 100} // ширина колонок xLbx:aAlign := {DT_CENTER, DT_LEFT} // как выровнять xLbx:aField := {'NAME', 'FULLNAME'} // какие поля показать xLbx:nHeightCell := 20 // соответствующие размеры xLbx:nHeightHead := 0 xLbx:nHeightFoot := 0 xLbx:bPostBlock := {|| NIL } // блок который выполнить после выбора xLbx:bSearch := {|| NIL } // блок поиска в таблице объекта xLbx:ListBox( oBrw, xVal ) // непосредственно показ T1->(DBCloseArea()) // убирается за собой lRet := FALSE // не пускаем в режим редактирования click here Предусмотрены футинги и их выравнивание , но пока не делал Если интересно , могу сюда сбросить скомпилированный пример, как это выглядит и исходники разумеется. PS. у дураков мысли сходятся , у меня точно такие же переменные для отлова модала lM и hM
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1905
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.07.18 16:20. Заголовок: Haz пишет Если интер..
Haz пишет цитата: | Если интересно , могу сюда сбросить скомпилированный пример, как это выглядит и исходники разумеется. |
| Конечно интересно. В итоге может стать заменителем родного ComboBox. цитата: | у дураков мысли сходятся , у меня точно такие же переменные для отлова модала lM и hM |
| Мне больше нравиться "краткость - сестра таланта" (c) Свои переменные с именем > 4 символов напрягают. "Лень двигатель прогресса" (c) Так что совпадения обоснованные цитата: | Для вызова используется oCol:PrevEdit() где обрабатывается примерно такой код |
| Аналогично поступаю, только через сообщение, тогда отрываемся от блока :bPrevEdit, имеем среду окна (можно контрола) This, По мне более свободен в действиях, т.к. тсб "свободна" для приема др. сообщений.
|
|
|
Haz
|
| |
Пост N: 1269
Зарегистрирован: 20.02.11
|
|
Отправлено: 04.07.18 16:46. Заголовок: SergKis пишет: Коне..
SergKis пишет: тут спрятал PS. При сборке половина инклюдов в исходнике класса не нужна, просто дернул как есть из проекта в поиске косячек с прорисовкой, только заметил. Сам использую ADS там другая логика. Но как предварительный пример как сделать поиск по справочнику сойдет, тем более что поиск скорее будет у каждого свой. Для исправления достаточно в процедуре поиска добавить oBrw:Reset() oBrw:GoTop() oBrw:Refresh(TRUE)
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 796
Зарегистрирован: 13.10.05
|
|
Отправлено: 04.07.18 20:54. Заголовок: Вызов справочников в..
Вызов справочников ввиде TsBrows давно применяю , как основной способ. Combox так же имеет право на существование, смотря по обстоятельствам. Окно модальное немодальное есть некоторые проблемы. Мысль, изложенная выше,закрывать окно справочника при потери фокуса - можно попробовать, но лучше, чтобы окно могло вести как модальное(при установке соответствующего параметра). Описание справочника делаю в текстовом файле, из которого считываются параметры создания окна. В функционале вызов справочника из формы предельно лаконичный цитата: | .. if ControlName == 'BtnTxt_IM' .or. ControlName == 'BtnTxt_IM_O' Select IM if !empty(sValue) Seek Upper(sValue) if Found() nR:=Recno() endif endif if CreaTBrows('IM.UKS',nR) EditLudi.&(ControlName).Value:=IM->IM endif ... |
| Из Tbrows через :bPrevEdit
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1920
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.07.18 20:23. Заголовок: gfilatov2002 Неболь..
gfilatov2002 Небольшая правка METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse ... line 6912 // uVal := Eval( ::aColumns[ nCol ]:bData ) uVal := ::bDataEval(::aColumns[ nCol ]) uVal := Eval( ::aColumns[ nCol ]:bPrevEdit, uVal, Self ) ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1313
Зарегистрирован: 11.02.10
|
|
Отправлено: 07.07.18 21:01. Заголовок: SergKis пишет: Небо..
SergKis пишет: Принято. Благодарю за помощь
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1921
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.07.18 13:30. Заголовок: gfilatov2002 Из это..
gfilatov2002 Из этой же темы METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse ... line 7469 ::nColSpecHd := 0 // If ValType( Eval( ::aColumns[ nCol ]:bData ) ) == "L" .and. ; If ValType( ::bDataEval( ::aColumns[ nCol ] ) ) == "L" .and. ; ::aColumns[ nCol ]:lCheckBox // virtual checkbox ::PostMsg( WM_CHAR, VK_SPACE, 0 ) ElseIf ::aColumns[ nCol ]:oEdit != Nil ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1314
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.07.18 18:06. Заголовок: SergKis пишет: Из э..
SergKis пишет:
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|