Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Процедура обработки события.   Найти похожие ветки 

 
Новичек   (2004-03-14 11:34) [0]

Здравствуйте, Мастера.
Имеется такой код:

type
  TAnything = class(TClientSocket)
  procedure AnythingClientRead(Sender: TObject; Socket:   TCustomWinSocket);
  end;

var
 AnythingClient: TAnything;

procedure TAnything.AnythingClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  //Некоторый код
end;


Вопрос:
Нужно ли при создании экземпляра (AnythingClient := TAnything.Create(nil);) явно задавать
процедуру обработки события OnRead (AnythingClient.OnRead := TAnything.AnythingClientRead)? Если нет - то почему?


 
Defunct ©   (2004-03-14 11:44) [1]

> Нужно ли при создании экземпляра (AnythingClient := TAnything.Create(nil);) явно задавать
процедуру обработки события OnRead (AnythingClient.OnRead := TAnything.AnythingClientRead)?


Нужно, потому что описав процедуру AnythingClientRead она является обычной процедурой, такой же как и любая другая. Просто из-за того, что она содержит в своем названии слова Client и Read она вызываться не будет. Вы ее нигде не вызываете, а сама по себе она не вызовется. Вы можете перекрыть конструктор сокета и инициализировать в нем поле OnRead этой процедурой:

TAnything = class(TClientSocket)
 constructor Create(AOwner: TComponent); override;
 procedure AnythingClientRead(Sender: TObject; Socket: TCustomWinSocket);
end;

...
var
...
constructor TAnything.Create(AOwner: TComponent);
Begin
 inherited;
 OnRead := AnythingClientRead
End;


 
Новичек   (2004-03-14 11:48) [2]

То есть если на форме лежит компонент ClientSocket, то ссылка на обработчик уже присутствует, хоть и неявно?


 
Новичек   (2004-03-14 11:55) [3]

Тогда как же самому определить обработчик OnRead? Он должен быть методом какого-либо класса?


 
Anatoly Podgoretsky ©   (2004-03-14 11:58) [4]

Да поскольку это свойство и его значение равно nil.
Обработчики On для конечного пользователя компоненты, а не для разработчика и как правило устанавливаются в процессе разработки программы, через инспектор объектов, реже программно.


 
Новичек   (2004-03-14 12:57) [5]

Надо же, научился :-)
И многое стало понятно.
Спасибо огромное, Мастера.



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
1-1079032336
Thomas Brandon
2004-03-11 22:12
2004.04.04
Ожидание окончания Thread a.


14-1079005085
KSergey
2004-03-11 14:38
2004.04.04
По поводу .NET и ее перспективности


6-1074683336
Winnet
2004-01-21 14:08
2004.04.04
Где найти документацию по TcpClient и TcpServer


8-1069861224
cyborg
2003-11-26 18:40
2004.04.04
Своевременное заполнение DirectSoundBuffer-а


3-1078859648
Anarki
2004-03-09 22:14
2004.04.04
Где в ADODataSet задать имя таблицы?