Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Внизпомогите ламеру добавить в свой класс событие Найти похожие ветки
← →
msgipss (2004-04-16 13:47) [0]например есть класс
test=class
k1:word; переменная
procedure inck(k:word); procedure увеличивает на 1 k1
onchange событие что произошло какое то увеличение
end;
как в delphi реализовать события, смотрел примеры из vcl не сильно понятно
Было бы здорово если бы на этом примере показали..
Заранее благодарен..
← →
Владислав © (2004-04-16 13:51) [1]...
private
FOnChange: TNotifyEvent;
protected
procedure DoChange; virtual;
public
OnChange: TNotifyEvent read FOnChange write FOnChange;
...
...
procedure TTest.DoChange;
begin
if Assigned(FOnChange) then
FOnChange(Self)
end;
...
Что то еще не ясно?
← →
Семен Сорокин © (2004-04-16 14:13) [2]
type
TK1Event = procedure (Sender: TObject; var Value: integer) of object;
TTest = class
private
FK1 : integer;
FOnChange: TK1Event;
procedure SetK1(Value: integer);
protected
procedure DoChange(var Value: integer); virtual;
public
property K1: integer read FK1 write SetK1;
property OnChange: TK1Event read FOnChange write FOnChange;
end;
...
procedure TTest.SetK1(Value: integer);
begin
if FK1 <> Value then begin
DoChange(Value);
FK1 := Value
end
end;
procedure TTest.DoChange(var Value: integer);
begin
if Assigned(FOnChange) then
FOnChange(Self, Value)
end;
← →
Владислав © (2004-04-16 14:16) [3]> Семен Сорокин © (16.04.04 14:13) [2]
А на кой вот это:
TK1Event = procedure (Sender: TObject; var Value: integer) of object;
?
Если именно для этого, то мож лучше назвать BeforeChange? ;)
← →
msgipss (2004-04-16 14:36) [4]спасибо за ответы (вполне понятно) 8))
тема закрыта
← →
Юрий Зотов © (2004-04-16 14:46) [5]Только метод диспетчеризации (DoChange) лучше делать не virtual, а dynamic. Экономит память.
← →
Владислав © (2004-04-16 14:52) [6]> Юрий Зотов © (16.04.04 14:46) [5]
Ну да. Согласен. И, насколько понимаю, экономит, если наследников много. Так?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.054 c