Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.021 c
1-66236
HELPER
2002-01-01 04:50
2002.01.21
Microsfot agent


7-66385
REL
2001-10-04 13:12
2002.01.21
!!! Небольшой вопрос по


3-66214
Cobalt_
2001-12-18 10:58
2002.01.21
Не могу сделать выборку по строкрвым полям!


4-66395
HMR
2001-11-19 20:02
2002.01.21
ShellExecute(Application.Handle, open , http:// ,nil,nil, SW_HIDE);


1-66307
Socol
2002-01-01 12:22
2002.01.21
Открытие файла





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