Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.58 MB
Время: 0.064 c
14-1100855016
Ilya___
2004-11-19 12:03
2004.12.12
Подскажите пожалуйста. правильно ли я делаю?


14-1100843607
Mike Kouzmine
2004-11-19 08:53
2004.12.12
Есть ли на форуме обладатели Nokia 7610?


14-1100879277
icebeerg
2004-11-19 18:47
2004.12.12
Поределение точки пересечения прямых


1-1101888371
Yurij-7
2004-12-01 11:06
2004.12.12
Логин в сети


1-1101428089
Rand
2004-11-26 03:14
2004.12.12
DrawGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский