On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
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;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
Профиль
Ответов - 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 приложения

Спасибо: 0 
Профиль
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., на фокус переключеня между окнами (после выхода из модал окна) это не отразилось - мышкой ставится

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4760
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.06.25 17:42. Заголовок: gfilatov2002 Немного..


gfilatov2002
Немного модифицировал WaitWindow(..., .T., ...) запуск из модального окна, вызывает окно ожидания modal
Скрытый текст

PS. В h_alert.prg изменил hPrevious := GetActiveWindow() на
hPrevious := iif( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() )

Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
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" 

Нормально компилируется.

Спасибо: 0 
Профиль
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, т.е. полный завис

Спасибо: 0 
Профиль
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 )

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2460
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.06.25 12:16. Заголовок: SergKis пишет: Прич..


SergKis пишет:

 цитата:
Причину понял


Пример отработал нормально.
Большое спасибо

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4764
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.06.25 17:03. Заголовок: gfilatov2002 Почист..


gfilatov2002
Почистил пример, работает, положил на ftp

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4765
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.06.25 11:12. Заголовок: gfilatov2002 Добавил..


gfilatov2002
Добавил в пример схему работы, по выборке данных, под окном кнопки <Wait>, для законченности варианта примера на событиях
положил на ftp

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4766
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.06.25 17:20. Заголовок: gfilatov2002 Добавил..


gfilatov2002
Добавил в пример на кнопку <Wait> иконки ожидания, положил на ftp

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2461
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.06.25 20:12. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавил в пример на кнопку <Wait> иконки ожидания


Большое спасибо!

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4767
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.25 13:42. Заголовок: gfilatov2002 Довел ..


gfilatov2002
Довел пример до раб. состояния (кнопки <Test 3\4>, <Wait> + в нее клавишу Esc),
положил на ftp

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2462
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.06.25 14:45. Заголовок: SergKis пишет: поло..


SergKis пишет:

 цитата:
положил на ftp


Спасибо, обязательно посмотрю...

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4768
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.25 14:42. Заголовок: gfilatov2002 Малень..


gfilatov2002
Маленькая правка в _TBrowse(...) (перенести строки) Скрытый текст


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2463
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.25 14:49. Заголовок: SergKis пишет: прав..


SergKis пишет:

 цитата:
правка в _TBrowse(...)


OK

Спасибо: 0 
Профиль
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;
- обновлены различные примеры, как обычно.

Желаю всем хорошего дня

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4769
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.07.25 13:39. Заголовок: gfilatov2002 Обнару..


gfilatov2002
Обнаружил, что перестала работать (не знаю с какой версии) ф-я __objHasData( oMain, "Name" )
Стал смотреть Tsb_DemoMdi пример и получаю снятие при выходе из последнего окна просмотра, добавил в пример вывод в лог
Скрытый текст

Получил
>>> 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
...


Спасибо: 0 
Профиль
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)

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет