Шаг 7 - Дальше о диалоге

Просто диалоговое окно это конечно круто, но вот хотелось бы еще и кнопки и окно редактирования. Давайте попробуем поместить кнопку.

......
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.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.