Форум » GUI » Переадресация событий кнопки » Ответить

Переадресация событий кнопки

spair2k: Добрый день! Я один из новеньких, изучающих МиниГУИ. Подскажите пожалуйста, как можно на лету переопределить события кнопок, допустим ONCLICK?

Ответов - 6

gfilatov: spair2k пишет: как можно на лету переопределить события кнопок Использовать свойство Form_1.Button_1.Action Рабочий пример ниже (обрати внимание на переопределение действия таймера также): #include "minigui.ch" Procedure Main DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 200 ; TITLE 'Hello World!' ; MAIN DEFINE BUTTON Button_1 ROW 10 COL 10 CAPTION 'Action 1' ACTION MsgBox(This.Title,'Message') DEFAULT .T. END BUTTON DEFINE BUTTON Button_2 ROW 40 COL 10 CAPTION 'Change Action 1' ACTION ( Form_1.Button_1.Action := {|| MsgBox(GetProperty('Form_1','Title'),'New title')}, ; Form_1.Button_1.Action ) END BUTTON DEFINE BUTTON Button_3 ROW 70 COL 10 CAPTION 'New Timer Action' ACTION Form_1.Timer_1.Action := {|| SetProperty('Form_1','Label_2','Value', Str(Memory(0)/1024) + ' MB')} END BUTTON DEFINE BUTTON Button_4 ROW 100 COL 10 CAPTION 'Cancel' ACTION ThisWindow.Release END BUTTON @ 15,150 LABEL Label_1 ; VALUE 'Timer Test:' @ 15,220 LABEL Label_2 TRANSPARENT DEFINE TIMER Timer_1 ; INTERVAL 1000 ; ACTION Form_1.Label_2.Value := Time() END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return

spair2k: gfilatov пишет: Рабочий пример Спасибо, выручил...

spair2k: решил я собрать этот примерчик и вот что получилось... gfilatov пишет: ACTION ( Form_1.Button_1.Action := {|| MsgBox(GetProperty('Form_1','Title'),'New title')}, ; Form_1.Button_1.Action ) ACTION Form_1.Timer_1.Action := {|| SetProperty('Form_1','Label_2','Value', Str(Memory(0)/1024) + ' MB')} На эти строчки ругается компилятор Harbour 1.0.0 Intl. (Rev. 9029) Copyright (c) 1999-2008, http://www.harbour-project.org/ Harbour MiniGUI Extended Distribution Compiling 'recourse.prg'... recourse.prg(24) Error E0022 Invalid lvalue: '()' recourse.prg(31) Error E0022 Invalid lvalue: '()' 2 errors я попробовал написать вот что Form1.btnOk.Action = {||msgbox('I got it!')} но вышло тоже сообщение? Где искать?


gfilatov: spair2k пишет: Где искать? Просто надо обновить Ваш расширенный релиз библиотеки - эта фишка появилась в 58-й сборке. А какая сборка у Вас?

spair2k: gfilatov пишет: А какая сборка у Вас? упс... у меня 54я... принял к сведению...

spair2k: у меня проблемы с 58ой... тот же код собирается с ошибками... пересобрал библиотеки под xHarbour пишет "не поддерживает pcode v.7" и как это лечить? вернулся на старую версию



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