Воскресенье, 28.04.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » Kol и MCK

"Hello World" или Обработка событий в KOL

Конечно кнопки и панели на форме - это хорошо, но они должны реагировать на действия совершаемые пользователем. Этим мы и займемся.
Смысл "обработки" действий такой же как и в VCL. К определенному действию над объектом, "привязывают" процедуры, которые и совершают полезную работу. Привязка идет через свойства, названия которых начинаются на OnXXXXXX: OnClick,OnResize,OnMouseDblClk,OnClose... Это довольно привычно.

Через эти свойства вы и должны сделать указатель с помощью функции MakeMethod на процедуру (или функцию если дело касается Message), которая будет обрабатывать событие. В параметрах у процедур должны быть определенные данные. В таблице показаны, какие должны быть заголовки процедур при определенных типах событий (конечно здесь описаны не все события)

тип события пример заголовка процедуры, обрабатывающего это событие
TOnEvent Procedure NameProc ( Dummy : Pointer; Sender : PControl );
TOnEventAccept Procedure NameProc ( Sender: PObj; var Accept: Boolean );
TOnMouse Procedure NameProc( Sender: PControl; var Mouse: TMouseEventData );
TOnKey Procedure NameProc( Sender: PControl; var Key: Longint; Shift: DWORD );
TOnChar Procedure NameProc( Sender: PControl; var Key: Char; Shift: DWORD );
TOnMenuItem Procedure NameProc( Sender : PMenu; Item : Integer );
TOnMessage Function NameFunc( var Msg: TMsg; var Rslt: Integer ): Boolean;

Например:

Procedure ButtonDn( Sender: PControl; var Mouse: TMouseEventData );
begin
// обработка 
end;
...

Button := NewButton(Form,'Кнопка')
// указываем на процедуру ButtonDn обрабатывающую событие OnMouseDown
// имеющее тип TOnMouse:
Button.OnMouseDown := TOnMouse( MakeMethod( nil, @ButtonDn ) );

Исходя из полученных знаний, давайте напишем программу, выводящую сообщение ( например: Hello World !!! ) при каком нибудь действии.

procedure ClikButton( Dummy : Pointer; Sender: PControl );
begin
 MsgOK( 'Hello World!!!' );
end;

var
 form,button:PControl;

begin
 form:=NewForm(Applet,'Пример');
 button:= NewButton(form,'Hello !!!').Size(150,50);
 button.OnClick := TOnEvent(MakeMethod(nil,@ClikButton));
 run(form);
end. 

Процедура MsgOk - это аналог VCL процедуры ShowMessage.

Получить ссылку на материал

Категория: Kol и MCK | Добавил: Барон (13.12.2011)
Просмотров: 943 | Теги: KoL, события | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования