Просто диалоговое окно это конечно круто, но вот хотелось бы еще и кнопки и окно редактирования. Давайте попробуем поместить кнопку.
...... BEGIN DIALOG OBJECT MyDialog 290, 180, "MyDialog", SUB MyDialogEventHandler PUSHBUTTON 181, 160, 46, 14, .Button1, "Button1" PUSHBUTTON 120, 140, 46, 14, .Button2, "Button2" TEXT 93, 28, 189, 21, .Text1, "This My Dialog" END DIALOG ......
Мы использовали PUSHBUTTON для установки кнопки. И дали ей идентификатор .Button1. Ну еще и местоположение на диалоговом окне. Она теперь есть, как же отловить момент нажатия на нее ??? Вот как это можно сделать в функции обработки событий диалогового окна:
SUB MyDialogEventHandler(BYVAL ControlID%, BYVAL Event%) IF Event=2 THEN MESSAGE "Hello" END IF END SUB
Но надо еще и узнать какая кнопка выбрана ведь их может быть много ! Для этого в событии нужно проверить идентификатор кнопки. Вот так:
SUB MyDialogEventHandler(BYVAL ControlID%, BYVAL Event%) IF Event=2 THEN IF ControlID%=MyDialog.Button1.GETID ( ) THEN MESSAGE "Hello Button1" ELSEIF ControlID%=MyDialog.Button2.GETID ( ) THEN MESSAGE "Hello Button2" END IF END IF END SUB
В ControlID% передается идентификатор кнопки, которая произвела событие. Вот мы и сравниваем его с идентификаторами кнопки с помошью GETID, которая выглядит вот так:
ReturnValue = DialogID.Identifier.GETID ( )
Если Ваше приложение будет полностью управляться с диалогового окна, то Вам понадобится кнопка Cancel, которая будет закрывать диалог. Это делается Вот так.
ELSEIF ControlID%=MyDialog.Button2.GETID ( ) THEN MyDialog.CLOSEDIALOG 3 END IF
Как видите мы используем функцию CLOSEDIALOG.