Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизСоздание обработчика событий в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c