Главная страница
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.036 c
14-1101061787
uny
2004-11-21 21:29
2004.12.12
забавное - "вопросы детей к богу"


3-1100248492
mazepa
2004-11-12 11:34
2004.12.12
пустое поле


14-1100984088
DeMoN-777
2004-11-20 23:54
2004.12.12
У кого дома более 1-ого работающего ПК


4-1098692188
Роман
2004-10-25 12:16
2004.12.12
Удаленное управление


9-1092055159
john black
2004-08-09 16:39
2004.12.12
Пример Jan Horn-a + Космос