![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание обработчика событий в Run Time.
OneFragLeft © (2004-11-27 22:04:00)Как создать TNotifyEvent, имея только процедуру или функцию.
Например:
procedure TForm1.FormCreate(Sender: TObject);
var ClientSocket:TClientSocket;
begin
ClientSocket:=TClientSocket.Create(form1);
with ClientSocket do
begin
OnRead:=?
end;
end;
и есть процедура:
procedure Reader;
begin
beep;
end;
как назначить выполнение процедуры Reader, при событии Read?
Defunct (2004-11-28 05:52:00) [1]OneFragLeft © (27.11.04 22:04)
procedure Reader;
begin
beep;
end;
такой обработчик нельзя ставить на OnRead. переполнится буфер сокета и заглючит у вас все. На OnRead надо считывать данные из сокета.
Юрий Зотов (2004-11-28 01:01:00) [2]Потому что Вы дали ложную информацию: OnRead - это НЕ TNotifyEvent.
procedure TForm1.Reader(Sender: TObject; Socket: TCustomWinSocket);
begin
Beep
end;
OneFragLeft (2004-11-27 22:49:00) [3]С кнопками работает, а с сокетом - нет.
OneFragLeft (2004-11-27 22:48:00) [4]Не-а, не работает.
Юрий Зотов (2004-11-27 22:45:00) [5]procedure TForm1.Reader(Sender: TObject);
begin
Beep
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with TClientSocket.Create(Self) do
begin
OnRead := Reader;
...
end
end;
OneFragLeft (2004-11-27 22:30:00) [6]Поясните, пожалуйста, что Вы имеете в виду.
Anatoly Podgoretsky (2004-11-27 22:25:00) [7]А зачем такие извращениея, если есть класс TForm1
OneFragLeft (2004-11-27 22:24:00) [8]Пишу:
procedure Reader;
begin
Beep;
end;
procedure TForm1.FormCreate(Sender: TObject);
var Method:TMethod;
ClientSocket:TClientSocket;
begin
Method.Code := @Reader;
ClientSocket:=TClientSocket.Create(form1);
with ClientSocket do
begin
OnRead := TNotifyEvent(Method);
end;
end;
Выдаёт ошибку: parameters list differ
begin...end (2004-11-27 22:12:00) [9]
> [1] begin...end © (27.11.04 22:11)
Извиняюсь: не OnClick, а OnRead, конечно же.
begin...end (2004-11-27 22:11:00) [10]
> OneFragLeft © (27.11.04 22:04)
var
Method: TMethod;
begin
Method.Code := @Reader;
ClientSocket.OnClick := TNotifyEvent(Method)
end.