![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый День!
Возникла проблема с написанием обработчика события. Код:
Type
TNotifyEvent=procedure(Sender:TObject) of object;
CBObj=class
CB,CB0,CB1: TComboBox;
relCB0,relCB1: array[1..2] of integer;
res:integer;
Constructor Create(j:integer);
private
CBClick: TNotifyEvent;
Protected
Procedure DoCBClick(Sender: TObject); dynamic;
public
property OnCBClick: TNotifyEvent read CBClick write CBClick;
Procedure GenerateCBClick(i,j:integer);
end;Можно ли назначить объекту CB класса CBObj стандартное событие OnChange, которое выполняется для объекта TComboBox? Последний раз редактировалось Admin, 22.05.2011 в 20:41. |
|
#2
|
||||
|
||||
|
Код:
Type
TNotifyEvent=procedure(Sender:TObject) of object;
CBObj=class
private
CB,CB0,CB1: TComboBox;
relCB0,relCB1: array[1..2] of integer;
res:integer;
FOnChange: TNotifyEvent;
Constructor Create(j:integer);
CBClick: TNotifyEvent;
procedure DoOnChange(Sender:TObject);
Protected
Procedure DoCBClick(Sender: TObject); dynamic;
public
property OnCBClick: TNotifyEvent read CBClick write CBClick;
Procedure GenerateCBClick(i,j:integer);
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
.......
constructor CBObj.Create(j:integer);
begin
...
CB.OnChange := DoOnChange;
CB0.OnChange := DoOnChange;
CB1.OnChange := DoOnChange;
end;
procedure DoOnChange(Sender:TObject);
begin
if Assigned(FOnChange) then FOnChange(Self);
end;Писал на коленке. Изложил суть. |
|
#3
|
|||
|
|||
|
Спасибо, с этим уже разобралась.
А суть была вот в чем: создаю програмным способом 2-мерный массив объектов. Я не знала как присвоить этим объектом событие. Кстати, а можно как-то в событии OnClick узнать на какой конкретно элемент массива нажали мышкой? |
|
#4
|
||||
|
||||
|
Для этого существует Sender.
|