On-line: MIKHAIL, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
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 [только новые]


gfilatov2002
moderator




Пост N: 2161
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.06.23 17:56. Заголовок: SergKis пишет: Поче..


SergKis пишет:

 цитата:
Почему убрано ?


Ваш ответ в посте №3211 от 19.05.20 10:57

 цитата:
Выяснил, наверно, почему не было Footers в
METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
Если одновременно использовать с :LDblClick() :LButtonClick() или :RButtonClick(), то
при нажатии LDblClick делая левый или правый клик "ложно" срабатывает после них LDblClick
Это надо отметить для себя, что можно использовать или :LDblClick() или :LButtonClick(), :RButtonClick().



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




Пост N: 4317
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.23 18:15. Заголовок: gfilatov2002 Спасиб..


gfilatov2002
Спасибо
Не использовал для Footer LDblClick, но просят, если не отпадет, то решу след. образом Скрытый текст

Это тест, что в oBrw:bLDblClick - не важно, отключен

 цитата:
можно использовать или :LDblClick() или :LButtonClick(), :RButtonClick().


Для Footers :LDblClick() не работает, отключена #if 0 ...
:LButtonClick(), :RButtonClick() не назначены (:lCellBrw := .T.)

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




Пост N: 7438
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.06.23 18:49. Заголовок: Григорий, а почему п..


Григорий, а почему при ошибке в программе - заново срабатывает MYINITWIN$() ?
Он же не должен 2 раза вызываться.

Вот лог из моей программы:
 [_fFind] 2: Forms:  ARRAY[4] {"Form_Main", "Form_Table_Abon", "Form_TbrwFiltr", "Form_Find"}    
Вот здесь была ошибка!!!
********** Вызов из: MYINITWIN$(281) --> Source\main.prg
Free Open Source Software: Harbour 3.2.0dev (r2301151017)
Free Compiler: Embarcadero C++ 7.30 (32-bit)
Free Gui library: Harbour MiniGUI Extended Edition 23.01.0 (32-bit) ANSI
... далее показ самой ошибки
Error MGERROR/0 Window: Form_Seek is not defined. Program terminated.
Called from MSGMINIGUIERROR(0)
Called from GETPROPERTY(0)
Called from FORMA_FILTER(878) in module: Source\Tbrw_fFind.prg
Called from MYFINDEDIT(762) in module: Source\Tbrw_fFind.prg


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




Пост N: 2162
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.06.23 19:26. Заголовок: Andrey пишет: почем..


Andrey пишет:

 цитата:
почему при ошибке в программе - заново срабатывает MYINITWIN$() ?


Точно не могу сказать, но, возможно, эта функция определена как INIT процедура.

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




Пост N: 4318
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.23 19:46. Заголовок: Andrey Сделай STAT..


Andrey
 
Сделай
STATIC lStaticMyInitWin := .F.

INIT PROCEDURE MyInitWin()
IF lStaticMyInitWin ; RETURN
ENDIF
lStaticMyInitWin := .T.
...

может поможет

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




Пост N: 7439
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.06.23 23:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Точно не могу сказать, но, возможно, эта функция определена как INIT процедура.


Да, у меня в программе эта функция определена, как было вами сделано ещё в 2013 году !
Пример \SAMPLES\BASIC\SPLASHDEMO_3
А она разве должна при ошибке ещё раз вызываться ?
Я считал что инициализация переменных прошла и всё, больше это функция не вызывается.
У меня в этой функции стоит удаление лог-файла.
И получается, что при ошибке лог стирается.

SergKis пишет:

 цитата:
Сделай
STATIC lStaticMyInitWin := .F.


Спасибо !

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




Пост N: 7441
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.23 12:16. Заголовок: Григорий, что делать..


Григорий, что делать с MODAL окнами ?
У меня пропала очередность возврата этих окон.
Я писал об этом в другой теме.

И ещё обнаружил проблемы с этими окнами в другом месте программы.
На экране открыто MODAL окно (1), открываю по кнопке другое MODAL окно (2), видно построение этого окна,
а потом бац и оно пропадает с экрана. Закрываешь все окна программы, а оно (2) обнаруживается под всеми окнами.
Причём фокус на окна совсем пропадает, окно приходиться закрывать по Alt+F4, ну и будет сразу вылет, типа нет такого окна.
Как такое может быть и как исправить ?
До этого года всё отлично работало и юзера не жаловались !!!
Тестировал на BCC 5.5 и MiniGUI 22.12.2

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




Пост N: 4319
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.23 12:27. Заголовок: Andrey Попробуй пос..


Andrey
Попробуй после
DEFINE WINDOW ... MODAL ...
сделать
This.Topmost := .T.
или
_ChangeWindowTopmostStyle ( This.Handle , .T. )
или
_ChangeWindowTopmostStyle ( GetFormHandle( This.Name ) , .T. )
каждому modal окну
Что будет ?
PS
Проверь, есть Topmost == .T. у окна на котором вызываешь modal, т.е.
DEFINE WINDOW ... TOPMOST ... ON INIT {|| This.Topmost := .F., ... }
на этом окне идет вызов DEFINE WINDOW ... MODAL ...
Есть выделенное цветом ?

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




Пост N: 7442
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.23 12:44. Заголовок: Откатился до версии ..


Откатился до версии MiniGUI 21.11.1 - пропали эти проблемы !!!
Т.е. ошибка пошла с версии 21.12

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




Пост N: 7443
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.23 13:21. Заголовок: SergKis пишет: Есть..


SergKis пишет:

 цитата:
Есть выделенное цветом ?


Сделал ! Помогло ! Спасибо !
Но это всё равно что окна прибить гвоздями...
Оно же по умолчанию MODAL

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




Пост N: 4320
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.23 14:52. Заголовок: Andrey пишет Но это ..


Andrey пишет
 цитата:
Но это всё равно что окна прибить гвоздями...
Оно же по умолчанию MODAL



 цитата:
— Мы не будем полагаться на случай. Мы пойдем простым логическим путем.
— Пойдем вместе.


Так что, "Если не мы, то кто же ..."


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




Пост N: 7444
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.23 15:14. Заголовок: У меня в проге было:..


У меня в проге было:
    DEFINE WINDOW Form_YACIMP                          ; 
....
MODAL NOSIZE /*NOSYSMENU*/ ;
ON INIT {|| This.Topmost := .T., aDimInit := InitYACIMP(nYear) ,;
.....

FUNCTION InitYACIMP(nYear,lCreateIndex)
....
WaitThreadCreateIcon( 'Поиск оплат абонента', )
DO EVENTS
...
WaitThreadCloseIcon() // kill the window waiting
DO EVENTS

DbSelectArea(nSel)

RETURN aRetDim

Функция WaitThreadCreateIcon( 'Поиск оплат абонента',) создаёт окно MODAL и назначает This.Topmost := .T.
В версии MiniGUI 21.11.1 - работало отлично, окно не пропадало и возврат вызова чепочки MODAL окон срабатывало как надо.
Ошибка пошла с версии 21.12, я в эти модули не лазил, юзера начали жаловаться...
Я перепроверил, собираешь с новой версии 21.12 и выше - ошибка, окно убегает, т.е. теряет Topmost := .T.
И что делать ? Приколачивать каждое окно, это не выход ?

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




Пост N: 7445
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.23 15:20. Заголовок: Собираю с новой верс..


Собираю с новой версии BCC 7.30 вообще фигня получается...
    .... 
WaitThreadCloseIcon() // kill the window waiting
DO EVENTS

DbSelectArea(nSel)

Form_YACIMP.Topmost := .T. // добавил так !!!

RETURN aRetDim

Окно на переднем плане, но НЕТ возможности нажать на кнопки на форме !!!
Прога висит !
Нажатие Alt+F4 тоже не помогает...
Потыкаешь и прога сваливается с ошибкой...
Повторюсь - при сборке MiniGUI 21.11.1 - работает отлично !

P.S. убрал WaitThreadCreateIcon() - тогда всё заработало !!!
Функцию WaitThreadCreateIcon() вместе писали...

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




Пост N: 4321
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.23 15:39. Заголовок: Andrey Смотрю в Tsb..


Andrey
Смотрю в Tsb_DemoMdi WaitThreadCreateIcon( cTitle, cIndicator ), если у тебя такой же, то неточности есть:
- нет _HMG_InplaceParentHandle
- на передний план ставил бы сразу после
 
DEFINE WINDOW &cFormName ;
CLIENTAREA nMaxWidth, 104 ;
MODAL NOCAPTION ;
...
This.Topmost := .T.
...
- в ON INIT можно делать This.Topmost := .F. (что бы можно было на excel окно, или другое не твое, переключиться)

Так как нет _HMG_InplaceParentHandle, то после Release фокус идет на MAIN окно, а на передний план ты переводишь Form_YACIMP
В целом все объяснимо

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




Пост N: 4322
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.06.23 15:42. Заголовок: Andrey пишет Функцию..


Andrey пишет
 цитата:
Функцию WaitThreadCreateIcon() вместе писали...


Тогда я говорил, что ЭТО плохая затея с потоками, т.к. надо использовать нормальное окно modal и внутри его исполнять, например, блок кода, для длит. операций и было бы значительно проще
 
FUNC Wait_Modal(..., bBlock )
LOCAL cForm := ...
...
_HMG_InplaceParentHandle := ThisWindow:Handle
...
DEFINE WINDOW ... MODAL ... ON INIT {|| This.Topmost := .F., This.TimerSetIcon.Enabled := .T., DoEvents(), _wPost(0) }
This.Topmost := .T.
...
DEFINE TIMER TimerSetIcon ... ACTION {|| SetProperty(cForm, "TimerSetIcon", "Enabled", .F.), ;
CheckTimerSetIcon(cForm), SetProperty(cForm, "TimerSetIcon", "Enabled", .T.) }
This.TimerSetIcon.Enabled := .F.
This.TimerSetIcon.Visible := .F.
...
(This.Object):Event( 0, bBlock )
...
END WINDOW
...
_HMG_InplaceParentHandle := 0
RETURN Nil
STATIC FUNC CheckTimerSetIcon( cForm )
...


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




Пост N: 7446
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.06.23 22:14. Заголовок: Что-то в МиниГуи пош..


Что-то в МиниГуи пошло не так.
У меня 2 проекта, один полный (вес ехе-ника 26 Мб),
второй сокращённый для отладки модулей (вес ехе-ника 16 Мб).

Собираю оба проекта на:
Harbour 3.2.0dev (r2301231146)
Borland C++ 5.8.2 (32-bit)
Harbour MiniGUI Extended Edition 23.01.0 (32-bit) ANSI


Сокращённый проект собирается быстрей, да и удобней с ним отлаживать.
В обоих проектах есть меню (модальное окно с выбором 4 кнопки)
Сокращённый проект прекрасно работает с этими кнопками и выбор/возврат есть по этим кнопкам.

Если запускаю полный проект, то кнопки отрабатывают ТОЛЬКО один раз, а потом при возврате
на это окно - оно ТУПО ВЕШАЕТСЯ.... ни мышкой окно подвинуть, ни кнопки не доступны.
Срабатывает только клавиша ESC, потому что назначил эту клавишу сам.
Вопрос на засыпку, почему такое СТРАННОЕ поведение окна ?
Как это побороть ?


Окно обычное, без всяких наворотов.
Сделал назначение AlertInfo() по клавише F2 - то в полном проекте, ТОЖЕ СРАЗУ ВЕШАЕТ окно...

Вот такой простой код:
Скрытый текст


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




Пост N: 4323
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.23 05:55. Заголовок: Andrey Сделай так ..


Andrey
Сделай так
 
...
ON KEY F2 OF Form_NZ ACTION _wPost(87, ThisWindow.Name)
...
:Event( 87, {|ow| _HMG_InplaceParentHandle := This.Handle , HelpThisWindow(), ;
_HMG_InplaceParentHandle := 0 , DoEvents(), _wPost(90, ow) } )

Используемая AlertInfo() -> HMG_Alert() - MODAL окно и нет заданого _HMG_InplaceParentHandle

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




Пост N: 4324
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.23 10:32. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может добавить что такое для окна modal (_HMG_InplaceOwnerHandle - new variable)
 
#xtranslate SET WINDOW MODAL [ PARENT ] HANDLE <x:ON,OFF> => _HMG_InplaceOwnerHandle := ( Upper(<(x)>) == "ON" )

FUNCTION _DefineModalWindow ( FormName, Caption, x, y, w, h, Parent, nosize, nosysmenu, nocaption, aMin, aMax, ;
...
IF ! Empty( _HMG_InplaceOwnerHandle )
_HMG_InplaceParentHandle := iif( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() )
ENDIF

IF _HMG_InplaceParentHandle <> 0
Parent := _hmg_InplaceParentHandle
ELSEIF ! _HMG_BeginWindowMDIActive
Parent := _hmg_MainHandle
ENDIF
...
IF ! Empty( _HMG_InplaceOwnerHandle )
_HMG_InplaceParentHandle := 0
ENDIF

RETURN ( FormHandle )


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




Пост N: 2163
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.06.23 12:44. Заголовок: SergKis пишет: для ..


SergKis пишет:

 цитата:
для окна modal (_HMG_InplaceOwnerHandle - new variable)


Сделаю, конечно.

Только хочу дать этой переменной имя _HMG_OwnerModalHandle

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




Пост N: 7447
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.06.23 13:24. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделай так


Сделал. Не помогает.
Цепочка старта окон WINDOWTYPE STANDARD TOPMOST, затем MODAL 1, затем MODAL 2 и вот на нём виснет.
Хотя в других местах программы есть такое же и не виснет...

Убрал ВСЕ ресурсы из полного проекта, ехе-ник стал весить 10 Мб, проблема осталась.
Видно всё таки что-то в полном проекте - построение модулей типа как в SAMPLES\BASIC\SPLASHDEMO_3 ?
Или ограничение по коду в Харборе ?

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