Форум » GUI » приколы функции OnChange() » Ответить

приколы функции OnChange()

SADSTAR33: в трех текстовых полях сделал такую реакцию на события OnChange OnChange(1) OnChange(2) OnChange(3) Для экономии туда же включил вариант OnChange(0) [pre2]function OnChange(n) if n=0 lChanged1:=.f. lChanged2:=.f. lChanged3:=.f. wMain.btn_Conf.Enabled:=.f. elseif n=1 lChanged1:=.t. wMain.btn_Conf.Enabled:=.t. elseif n=2 lChanged2:=.t. wMain.btn_Conf.Enabled:=.t. elseif n=3 lChanged3:=.t. wMain.btn_Conf.Enabled:=.t. endif return Nil [/pre2] Так вот - реакция полей формы = правильная А вызов OnChange(0) из другой функции - не срабатывает. [pre2] ... OnChange(0) MemoWrit(cIniFile,t) [/pre2] Не по ошибке, а просто как нет такой строчки в программе. Я туда отладочной информации напихал - не вызавается функция!? Пока не изменил имя на EvOnChange(). Такое впечатление что вызывалась какая-то другая пустая функция OnChange() Но башку себе сломал на этом деле - ну ведь не может строчка в этом места программы не выполняться.

Ответов - 5

AlexMyr: А если так if n==0 или if n==.f. (т.е. вместо 0 передавать .f.)

gfilatov2002: SADSTAR33 пишет: Такое впечатление что вызывалась какая-то другая пустая функция OnChange() Просто выражение OnChange зарезервировано в MiniGUI для собственной команды Но это - полбеды, более сложная ситуация с тем, что стандартная Клипперная команда FIELD <имя поля> тоже зарезервирована в MiniGUI для собственной команды. Поэтому приходится быть внимательным и проверять текст программы после работы препроцессора (т.е. использовать при компиляции ключ /p)

SADSTAR33: AlexMyr пишет: А если так if n==0 или if n==.f. (т.е. вместо 0 передавать .f.) Я отладочное сообщение вставлял в том числе и сразу после входа в функцию до If Видел вызов функции при занесении текста в текстовые поля. Но не видел при вызове из программы.


SADSTAR33: gfilatov2002 пишет: Просто выражение OnChange зарезервировано в MiniGUI для собственной команды В MiniGUI.chm упоминается только как OnChange Action to be performed when generic changing of the control SYNTAX ON CHANGE <OnChangeProcedure> | <bBlock> Alternate Syntax: ONCHANGE <OnChangeProcedure> | <bBlock> что (по моему представлению) является частью команды определения(создания) контрола а не отдельной командой Харбора/МиниГУИ

gfilatov2002: SADSTAR33 пишет: В MiniGUI.chm упоминается только как Не забывайте про альтернативный синтаксис #xcommand ONCHANGE <onchange> ; =>; _HMG_ActiveControlOnChange := <{onchange}>



полная версия страницы