On-line: PSP, Haz, гостей 0. Всего: 2 [подробнее..]
АвторСообщение



Пост N: 2
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 04.07.07 00:19. Заголовок: Инициализация полей ввода и событие OnChange


При создании окна последовательно создаются визуальные контролы и
заполняются начальными значениями (там где это предусмотрено программером).
При этом срабатывает событие OnChange.
При этом окно еще недоделано.
Последующие виз.контролы еще не созданы.
Если OnChange обращается к ним - это облом программы.
Приходится встраивать дополнительные навороты в обработчик OnChange, чтобы он не срабатывал при первом вызове и срабатывал в дальнейшем. Или отказываться от OnChange и переносить навороты в другое место.
(А при инициализации поля датой событие OnChange срабатывает два раза.
давно делал такие исследования. может сейчас что-то изменилось?)

Вопрос-предложение.
Не лучше было бы на уровне MiniGUI не включать обработчики событий OnChange до полного создания окна?
Или уже сейчас есть способы управлять срабатыванием OnChange?



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]


модератор




Пост N: 508
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 04.07.07 08:29. Заголовок: Re:


SADSTAR2 пишет:

 цитата:
Если OnChange обращается к ним - это облом программы.
Приходится встраивать дополнительные навороты в обработчик OnChange, чтобы он не срабатывал при первом вызове и срабатывал в дальнейшем.


Да, все верно

SADSTAR2 пишет:

 цитата:
Или отказываться от OnChange и переносить навороты в другое место.


Это неудобно

SADSTAR2 пишет:

 цитата:
Не лучше было бы на уровне MiniGUI не включать обработчики событий OnChange до полного создания окна?


У меня есть предложение с бразильского форума добавить такую проверку в функцию _DoControlEventProcedure() :

*------------------------------------------------------------------------------*
Function _DoControlEventProcedure ( bBlock , i , cEventType )
*------------------------------------------------------------------------------*
...
if _HMG_BeginWindowActive = FALSE .or. cEventType # 'CONTROL_ONCHANGE'
Eval( bBlock )
endif
...

Уже сделал, будет доступно в следующем релизе

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 20.07.07 02:46. Заголовок: Мое мнение.


Честно говоря - я не врубился в конкретику реализации, т.к. не знаю Ху из Ху.
Думаю что включать обработку OnChange на форме надо после завершения обработки события OnInit для формы (завершения процедуры OnInit)


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 148
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет