Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка событий в дмнамически создаваемых компонентах [D5, Win2k]


hacker ©   (2002-01-01 21:48:00) 

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


hacker   (2002-01-04 07:39:00) [1]

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


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

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


hacker   (2002-01-02 11:18:00) [3]

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


hacker   (2002-01-02 11:14:00) [4]

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


hacker   (2002-01-02 10:59:00) [5]

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


ctapik-net   (2002-01-02 09:25:00) [6]

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


hacker   (2002-01-02 08:51:00) [7]

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


ctapik-net   (2002-01-02 01:18:00) [8]

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

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


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

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

Вот и все.


Наверх

Титульная страница Поиск, карта сайта Написать письмо