Главная страница
    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.46 MB
Время: 0.038 c
4-1098844875
ROMshtain
2004-10-27 06:41
2004.12.12
Как поменять caption чужого окна?


4-1098134964
Piter
2004-10-19 01:29
2004.12.12
Отлов сообщения о повторном выводе иконки


3-1100606263
lightix
2004-11-16 14:57
2004.12.12
Tquery и обновление данных


1-1101715306
Molchanov
2004-11-29 11:01
2004.12.12
Удаление строк из TRichEdit


14-1100857607
dr Tr0jan
2004-11-19 12:46
2004.12.12
Билли получает 4 миллиона писем спама ежедневно.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский