Автор | Сообщение |
|
| |
Пост N: 23
Зарегистрирован: 31.05.07
|
|
Отправлено: 20.11.08 11:20. Заголовок: Переадресация событий кнопки
Добрый день! Я один из новеньких, изучающих МиниГУИ. Подскажите пожалуйста, как можно на лету переопределить события кнопок, допустим ONCLICK?
|
|
|
Ответов - 6
[только новые]
|
|
|
| модератор
|
Пост N: 907
Зарегистрирован: 25.05.05
|
|
Отправлено: 20.11.08 11:45. Заголовок: spair2k пишет: как ..
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 |
|
|
|
|
|
| |
Пост N: 24
Зарегистрирован: 31.05.07
|
|
Отправлено: 20.11.08 11:55. Заголовок: gfilatov пишет: Раб..
gfilatov пишет: Спасибо, выручил...
|
|
|
|
| |
Пост N: 25
Зарегистрирован: 31.05.07
|
|
Отправлено: 20.11.08 15:51. Заголовок: решил я собрать этот..
решил я собрать этот примерчик и вот что получилось... 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!')} |
| но вышло тоже сообщение? Где искать?
|
|
|
|
| модератор
|
Пост N: 908
Зарегистрирован: 25.05.05
|
|
Отправлено: 20.11.08 16:17. Заголовок: spair2k пишет: Где ..
spair2k пишет: Просто надо обновить Ваш расширенный релиз библиотеки - эта фишка появилась в 58-й сборке. А какая сборка у Вас?
|
|
|
|
| |
Пост N: 26
Зарегистрирован: 31.05.07
|
|
Отправлено: 24.11.08 10:19. Заголовок: gfilatov пишет: А к..
gfilatov пишет: упс... у меня 54я... принял к сведению...
|
|
|
|
| |
Пост N: 28
Зарегистрирован: 31.05.07
|
|
Отправлено: 24.11.08 10:36. Заголовок: у меня проблемы с 58..
у меня проблемы с 58ой... тот же код собирается с ошибками... пересобрал библиотеки под xHarbour пишет "не поддерживает pcode v.7" и как это лечить? вернулся на старую версию
|
|
|
|