Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.21;
Скачать: CL | DM;

Вниз

Обработка событий в дмнамически создаваемых компонентах   Найти похожие ветки 

 
hacker ©   (2002-01-01 21:48) [0]

Проблема: Я создаю динамически компонент TClientSocket (в общем можно любой). И мне надо обработать событие OnRead. Где и что писать пока без понатия.
Чего делать?


 
ctapik-net ©   (2002-01-02 01:18) [1]

все очени просто
создаешь процедуру

procedure TMyForm.BlaBla(Sender: TObject; Socket: TCustomWinSocket) ;
Begin
...........
End ;


потом пишешь следующее

MySocket := TClientSocket.Create(Self) ;
MySocket.OnRead := BlaBla ;

Вот и все.


 
hacker ©   (2002-01-02 08:51) [2]

Все не так просто, формы то нет, это просто DLL и там просто обычные процедуры, вот и надо как-то такое присваивание сделать, но типы у обычной процедуры и события хоть как разные, Чего делать?!


 
ctapik-net ©   (2002-01-02 09:25) [3]

Логично предположить что подаваемый параметр Self заменить на NIL


 
hacker ©   (2002-01-02 10:59) [4]

Этим мы только отказываемся от владельца компонента, а на присваивание это не влияет. Проблема в том, что у события тип procedure(чего-то там) of object ; , а у процедуры просто procedure(чего-то там); и поэтому при присваивании ошибка - "несовместимость типов method poiter and regular procedure".


 
hacker ©   (2002-01-02 11:14) [5]

Сделал вот так: создал потомка от TClientSocket, описал там процедуры обработки и где создаю объект прописал ClientSocket.OnЧего-надо:=ClientSocket.новая_процедура_обработки.
так без проблем работает все кроме OnRead. Почему


 
hacker ©   (2002-01-02 11:18) [6]

OnRead тоже работает таким образом, это просто руки кривые.
Вот и все как-то сам разобрался.


 
Victor   (2002-01-02 11:33) [7]

Извините, что вмешиваюсь в дискуссию, но я поступаю в этих случаях проще - создаю нормальный TForm c нужным компонентом и набором обработчиков событий, а потом динамически клонирую сколько надо объектов описанного класса, добавляя их в TStringList (ну или куда хотите). Для этого и создан VCL, и по другому- извращение. Не хочется VCL- откройте книжку по C++, почитайте про сокеты, и опишите класс на основе WinSocket, сейчас у меня нет примеров под рукой.
Удачи.


 
hacker ©   (2002-01-04 07:39) [8]

Victor, С++ хорошо и TForm тоже, но на C++ пока не перешел(хотя надо бы), а TForm в DLL просто так пихать - вроде нехорошо получается



Страницы: 1 вся ветка

Текущий архив: 2002.01.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
4-66409
NetBreaker666
2001-11-17 19:58
2002.01.21
Как работать с CAB файлами.


4-66400
Olgerd
2001-11-21 20:36
2002.01.21
Не совсем понятно


7-66383
Dmitry V. Averuanov
2001-10-04 11:35
2002.01.21
Не удается передать Tbitmap в качестве параметра...


7-66381
Asker
2001-10-03 07:37
2002.01.21
Как всё-таки изменить скорость CD-rom a


1-66312
BOOOMER
2002-01-04 17:17
2002.01.21
Actions