Главная страница
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.006 c
4-66411
Tatyana
2001-11-12 16:49
2002.01.21
Как встроить свою кнопку (со своими действиями) в ToolBar Internet Explorer


3-66190
dimsfdf
2001-12-17 14:44
2002.01.21
А какой сейчас самый свежий ORACLE?


14-66356
Крутов Алексей
2001-11-23 12:11
2002.01.21
Password для Delphi4


14-66341
Oleg Gashev
2001-11-24 17:35
2002.01.21
На Ваш Суд


1-66264
RaZEr
2001-12-29 06:54
2002.01.21
Попытки внести изменения в файл