Главная страница
    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.47 MB
Время: 0.042 c
6-1096714960
Felixxxxx
2004-10-02 15:02
2004.12.12
Как в локальной сети организовать связь


1-1101298848
Amadey
2004-11-24 15:20
2004.12.12
Проблема с формой в DLL


14-1101061787
uny
2004-11-21 21:29
2004.12.12
забавное - "вопросы детей к богу"


1-1101652454
Жуков
2004-11-28 17:34
2004.12.12
Параметры в тексте


3-1100239591
Layner
2004-11-12 09:06
2004.12.12
А с расширенными ХП под MSSQLServer никто не работал?





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