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

Вниз

Создание обработчика событий в Run Time.   Найти похожие ветки 

 
OneFragLeft ©   (2004-11-27 22:04) [0]

Как создать 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?


 
begin...end ©   (2004-11-27 22:11) [1]


> OneFragLeft ©   (27.11.04 22:04)


var
 Method: TMethod;
begin
 Method.Code := @Reader;
 ClientSocket.OnClick := TNotifyEvent(Method)
end.


 
begin...end ©   (2004-11-27 22:12) [2]


> [1] begin...end ©   (27.11.04 22:11)

Извиняюсь: не OnClick, а OnRead, конечно же.


 
OneFragLeft ©   (2004-11-27 22:24) [3]

Пишу:
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


 
Anatoly Podgoretsky ©   (2004-11-27 22:25) [4]

А зачем такие извращениея, если есть класс TForm1


 
OneFragLeft ©   (2004-11-27 22:30) [5]

Поясните, пожалуйста, что Вы имеете в виду.


 
Юрий Зотов ©   (2004-11-27 22:45) [6]

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:48) [7]

Не-а, не работает.


 
OneFragLeft ©   (2004-11-27 22:49) [8]

С кнопками работает, а с сокетом - нет.


 
Юрий Зотов ©   (2004-11-28 01:01) [9]

Потому что Вы дали ложную информацию: OnRead - это НЕ TNotifyEvent.

procedure TForm1.Reader(Sender: TObject; Socket: TCustomWinSocket);
begin
 Beep
end;


 
Defunct ©   (2004-11-28 05:52) [10]

OneFragLeft ©   (27.11.04 22:04)
procedure Reader;
begin
 beep;
end;

такой обработчик нельзя ставить на OnRead. переполнится буфер сокета и заглючит у вас все. На OnRead надо считывать данные из сокета.



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

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

Наверх




Память: 0.49 MB
Время: 0.024 c
14-1101266176
ИМХО
2004-11-24 06:16
2004.12.12
Динамо Киев - Рома Италия 2-0


1-1101447353
Рафик
2004-11-26 08:35
2004.12.12
Вопрос по TreeView


4-1099052493
pavel_guzhanov
2004-10-29 16:21
2004.12.12
Остановка сервиса


6-1096757015
Klopan
2004-10-03 02:43
2004.12.12
Потоки


1-1101841960
The Ram
2004-11-30 22:12
2004.12.12
Подскажите пожалуйста!