Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание обработчика событий в 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо