| Автор | Сообщение |
|
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
[только новые]
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4758
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.06.25 11:47. Заголовок: gfilatov2002 пишет И..
gfilatov2002 пишет | цитата: | | Избежание повторного запуска модальных окон |
| Это не оч. понятно, т.к. вызов модального окна из модального - нормальная ситуация для gui приложения
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4759
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.06.25 12:27. Заголовок: gfilatov2002 пишет *..
gfilatov2002 пишет | цитата: | | * После закрытия модального окна переменная обязательно сбрасывается в .F.. |
| Может надо установку значения делать от Len(HMG_GetForms("M")) > 0 PS Поставил в ф-ии вызова модальных окон (в примере) перед выходом ... ACTIVATE WINDOW &cForm _HMG_InplaceParentHandle := 0 _HMG_IsModalActive := Len(HMG_GetForms("M")) > 0 RETURN NIL т.е. при наличии модал окон переменная == .T., на фокус переключеня между окнами (после выхода из модал окна) это не отразилось - мышкой ставится
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4760
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.06.25 17:42. Заголовок: gfilatov2002 Немного..
gfilatov2002 Немного модифицировал WaitWindow(..., .T., ...) запуск из модального окна, вызывает окно ожидания modal Скрытый текст
FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aFontColor, aBackColor ) LOCAL lIsModal, cModal, hWnd ... nHeight += 8 IF !Empty( _HMG_MainHandle ) hWnd := iif( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() ) IF hWnd != NIL .and. ( nI := GetFormIndexByHandle ( hWnd ) ) > 0 IF _HMG_aFormType [ nI ] == "M" cModal := "M" ENDIF ENDIF ENDIF IF lNoWait .and. Empty( cModal ) _HMG_IsModalActive := .F. DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD ELSE _HMG_IsModalActive := .T. DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL IF HB_ISBLOCK( bOnInit ) l_No_Wait := .F. ENDIF ENDIF ...
| PS. В h_alert.prg изменил hPrevious := GetActiveWindow() на hPrevious := iif( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() )
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4761
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.06.25 08:05. Заголовок: SergKis пишет ..
SergKis пишет | цитата: | IF hWnd != NIL .and. ( nI := GetFormIndexByHandle ( hWnd ) ) > 0 IF _HMG_aFormType [ nI ] == "M" cModal := "M" ENDIF ENDIF |
| Лучше так IF hWnd != NIL .and. ( nI := GetFormIndexByHandle ( hWnd ) ) > 0 IF _HMG_aFormType [ nI ] $ "MSY" cModal := "M" ENDIF ENDIF
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2459
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.06.25 14:08. Заголовок: SergKis пишет: Лучш..
SergKis пишет: Благодарю за помощь! Записал так: ... nHeight += 8 #ifdef _HMG_COMPAT_ IF ! Empty( _HMG_MainHandle ) hWnd := iif( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() ) IF hWnd != NIL .and. ( nI := GetFormIndexByHandle( hWnd ) ) > 0 IF _HMG_aFormType [ nI ] $ "MSY" _HMG_IsModalActive := .T. ENDIF ENDIF ENDIF #endif IF lNoWait .AND. ! _HMG_IsModalActive DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD ELSE DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL IF HB_ISBLOCK( bOnInit ) l_No_Wait := .F. ENDIF ENDIF
|
 |
|
|
Andrey
|
| постоянный участник
|
Пост N: 8003
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.06.25 15:32. Заголовок: Ставлю так: #include..
Ставлю так: #include "minigui.ch" .... cForm := GetFormNameByIndex( nIndex ) Не компилируется... выдаёт ошибку: Error: Unresolved external '_HB_FUN_GETFORMNAMEBYINDEX' referenced from Ставлю так: #include "hmg.ch" Нормально компилируется.
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4762
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.06.25 16:45. Заголовок: gfilatov2002 пишет И..
gfilatov2002 пишет | цитата: | Использование: lIsModal := _HMG_IsModalActive ... _HMG_IsModalActive := .F. _HMG_IsModalActive := .T. ... _HMG_IsModalActive := lIsModal |
| С этим большая непонятка, пример положил на ftp. Запуск, жмем <Test 1> => <Modal> => <Modal> => <Wait> => [X] потом <Exit> => <Exit> Вышли на уровень STANDARD окна, все работает, кроме переключения фокуса с модальных окон на main окно мышкой (это было) Теперь то же самое делаем на кнопке <Test 2> => ... На ней сделано с переменной, как написано выше, т.е. работа modal окон со значением .T. :Event( 1, {|ow,ky,cn| Local lIsModal := _HMG_IsModalActive ? ow:Name+" :Event( 1 ... start", _HMG_IsModalActive SET WINDOW THIS TO ow:Name _HMG_IsModalActive := .T. ?? "===>", _HMG_IsModalActive Table_Four(ow, cn, .T.) _HMG_IsModalActive := lIsModal ? ow:Name+" :Event( 1 ... stop ", _HMG_IsModalActive SET WINDOW THIS TO ky := ow IF ow:Type == "M" ; EnableWindow( ky := ow:Handle ) ENDIF ow:Enabler(cn, .T.) ow:SetFocus(ow:Cargo:cFocus) Return Nil }) Можно сказать, что все хорошо (переключение мышкой фокуса блокировано), до возврата на окно STANDARD ... окно не в фокусе и выход только по TaskManager, т.е. полный завис
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4763
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.25 10:42. Заголовок: SergKis пишет полный..
SergKis пишет Причину понял, окно MAIN и STANDARD в состоянии disable, поставил в блоки кода окно MAIN :Event( 1, {|ow,ky,cn| _wSend(10,,{cn, .F.}) SET WINDOW THIS TO ow:Name Table_One(ow, cn) SET WINDOW THIS TO _wSend(10,,{cn, .T.}) ow:SetFocus( ky := ow:Cargo:cFocus ) Return Nil }) :Event( 2, {|ow,ky,cn| _wSend(10,,{cn, .F.}) SET WINDOW THIS TO ow:Name Table_Two(ow, cn) SET WINDOW THIS TO _wSend(10,,{cn, .T.}) ow:SetFocus( ky := ow:Cargo:cFocus ) Return Nil }) в окно STANDARD кнопка <Test 2> :Event( 1, {|ow,ky,cn| Local lIsModal := _HMG_IsModalActive SET WINDOW THIS TO ow:Name _HMG_IsModalActive := .T. Table_Four(ow, cn, .T.) _HMG_IsModalActive := lIsModal EnableWindow( _HMG_MainHandle ) EnableWindow( ky := ow:Handle ) ow:Enabler(cn, .T.) ow:SetFocus(ow:Cargo:cFocus) DO EVENTS Return Nil }) отработало как надо, т.е. надо, наверно, вводить команду на установку\снятие режима modal, при снятии всем оставшимся окнам делать EnableWindow( Handle )
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2460
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.06.25 12:16. Заголовок: SergKis пишет: Прич..
SergKis пишет: Пример отработал нормально. Большое спасибо 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4764
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.25 17:03. Заголовок: gfilatov2002 Почист..
gfilatov2002 Почистил пример, работает, положил на ftp
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4765
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.06.25 11:12. Заголовок: gfilatov2002 Добавил..
gfilatov2002 Добавил в пример схему работы, по выборке данных, под окном кнопки <Wait>, для законченности варианта примера на событиях положил на ftp
|
 |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4766
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.06.25 17:20. Заголовок: gfilatov2002 Добавил..
gfilatov2002 Добавил в пример на кнопку <Wait> иконки ожидания, положил на ftp
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2461
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.06.25 20:12. Заголовок: SergKis пишет: Доба..
SergKis пишет: | цитата: | | Добавил в пример на кнопку <Wait> иконки ожидания |
| Большое спасибо! 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4767
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.06.25 13:42. Заголовок: gfilatov2002 Довел ..
gfilatov2002 Довел пример до раб. состояния (кнопки <Test 3\4>, <Wait> + в нее клавишу Esc), положил на ftp
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2462
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.06.25 14:45. Заголовок: SergKis пишет: поло..
SergKis пишет: Спасибо, обязательно посмотрю... 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4768
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.06.25 14:42. Заголовок: gfilatov2002 Малень..
gfilatov2002 Маленькая правка в _TBrowse(...) (перенести строки) Скрытый текст
:SetDeleteMode( .F. ) IF HB_ISBLOCK( bInit ) ; Eval( bInit, oBrw, oParam ) // 1. call your customization functions ENDIF IF oParam:lNoPicture // clear oCol:cPicture j := iif( :lIsDbf, "ORDKEYNO", "ARRAYNO" ) FOR EACH i IN :aColumns IF !Empty( i:cName ) .AND. i:cName != j i:cPicture := NIL ENDIF NEXT ENDIF IF HB_ISBLOCK( bInit ) ; Eval( bInit, oBrw, oParam ) // 1. call your customization functions ENDIF
|
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2463
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.06.25 14:49. Заголовок: SergKis пишет: прав..
SergKis пишет: OK 
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2464
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.06.25 17:21. Заголовок: Всем кому это интересно...
Завершена подготовка новой сборки 25.07, которая будет опубликована завтра. Что нового: - исправление обнаруженных ошибок после проведенного анализа используемых Си-функций (в том числе 96+ WinAPI функций); - продолжено документирование исходного кода библиотеки, которое было начато в еще в декабре прошлого года; - добавлена полезная функция HMG_ListTimers(), которая возвращает массив активных таймеров в виде { hParentWnd, nTimerID, nInterval } - исправлена ошибка в коде функции Selector для режима OTM, добавлен тестовый пример для проверки всех основных SQL-выборок: TestBasicSelector() TestSelectorWithFilter() TestSelectorWithGroupAndSummary() TestSelectorOneToMany(); - обновлена библиотека libpng до свежей версии 1.6.49; - обновлены различные примеры, как обычно. Желаю всем хорошего дня 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4769
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.07.25 13:39. Заголовок: gfilatov2002 Обнару..
gfilatov2002 Обнаружил, что перестала работать (не знаю с какой версии) ф-я __objHasData( oMain, "Name" ) Стал смотреть Tsb_DemoMdi пример и получаю снятие при выходе из последнего окна просмотра, добавил в пример вывод в лог Скрытый текст
(This.Object):Event( 98, {|ow| Local oBrw, oTsb := ow:GetObj("oBrw") If ISOBJECT(oTsb) oBrw := oTsb:Tsb If ow:Cargo:FocusedControl == "MyFind" // GetBox edit end oBrw:SetFocus() DO EVENTS RETURN Nil ElseIf oBrw:IsEdit oBrw:PostMsg( WM_KEYDOWN, VK_ESCAPE ) // TsBrowse edit end oBrw:SetFocus() DO EVENTS RETURN Nil EndIf // Child release EndIf _CloseActiveMdi() DO EVENTS If Len(HMG_GetForms("Y")) == 0 ? ">>> 98", oMain, oMain:Name ?? __objHasData( oMain, "Name" ), oMain:Name _wPost(99, oMain) EndIf RETURN Nil } )
| Получил >>> 98 'O' wMain .F. wMain т.е. имеем .F., в версии hmg-23.12 все работает как надо, если это так, то надо в ф-ях сделать FUNCTION _wPost( nEvent, nIndex, xParam ) ... cForm := nIndex:Name //cForm := _HMG_THISFORMNAME //IF __objHasData( nIndex, "Name" ) ; cForm := nIndex:Name //ENDIF ... FUNCTION _wSend( nEvent, nIndex, xParam ) ... cForm := nIndex:Name //cForm := _HMG_THISFORMNAME //IF __objHasData( nIndex, "Name" ) ; cForm := nIndex:Name //ENDIF ...
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4770
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.07.25 15:37. Заголовок: PS Есть файл checkre..
PS Есть файл checkres.txt в примере с содержимым C:\MiniGUI\SAMPLES\Advanced\Tsb_DemoMDI\DemoMdi.exe -- BRUSH,353372758,DOMETHOD(6027)->MAIN(317) C:\MiniGUI\SAMPLES\Advanced\Tsb_DemoMDI\DemoMdi.exe -- BRUSH,-1425010468,MDICHILDOPEN(1009)->(b)MAIN(227)->DO_WINDOWEVENTPROCEDURE(84)->TWNDDATA:DOEVENT(1441)->DO_ONWNDLAUNCH(717)->(b)INIT(127)->EVENTS(1177)->DOMESSAGELOOP(0)->_ACTIVATEWINDOW(1648)->DOMETHOD(6027)->MAIN(317)
|
 |
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|