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

Вниз

Обработка сообщений VCL компонента   Найти похожие ветки 

 
Alex Shulg ©   (2003-03-12 11:06) [0]

Народ, подскажите:
Есть VCL компонент на форме, имеет обработчики событий. Во время выполнения делаю дестрой, а потом снова создаю этот VCL компонент. Как у вновь созданного восстановить обработчики событий, которые я создал в режиме проектирования?
Зарание благодарю.


 
Roma ©   (2003-03-12 11:12) [1]

Его свойствам OnXXX присвоить значения:
NewRuntimeButton.OnClick := DesigntimeButtonOnClick;

Обработчики событий - это методы твоего класса (в данном случае - формы), при удалении компонента методы (методы формы) не удаляются, можешь спокойно их присваивать (назначать) кому угодно (только чтоб тип совпадал)...


 
KA_   (2003-03-12 11:20) [2]

У компонента обработчик события - это свойство. Посмотри сырцы VCL, например TWinControl

TWinControl = class(TControl)
private
...
FOnKeyDown: TKeyEvent;
...
protected
...
property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp;
...
end;

Значит что? После создания компонента присвой значение свойству.
Например:

TMyForm = class(TForm)
...
private
...
procedure ClickMyshyuNaKnopke(Sender: TObject);
...
end;

var
my_form: TMyForm;
...
implementation
...
var
btn: TButton;
...
begin
btn := TButton.Create(My_Form);
btn.Caption := "Ето кнопка";
btn.OnClick := my_form.ClickMyshyuNaKnopke;
end;


 
Alex Shulg ©   (2003-03-12 11:41) [3]

Спасибо, все получилось!


 
REA ©   (2003-03-12 12:35) [4]

А зачем делать Destroy, если потом опять создавать?
Логичнее сделать visible false.
Если нужно сохранить все published свойства, то можно записать в поток и потом считать из потока.


 
Alex Shulg ©   (2003-03-12 16:27) [5]

Этот компонент обрабатывает некоторые данные в цикле, а когда возникает исключительная ошибка при одном из прохождений, остальные прохождения тоже проходят с ошибкой. Удаляя, а потом создавая компонент, я добиваюсь того, что последующие прохождения цикла выполняются корректно. (Какой-то глюк остается в компоненте после искл.ситуации)


 
Sheriff   (2003-03-12 16:32) [6]

беготня от исключений устойчивости программе не добавит. :)


 
REA ©   (2003-03-12 17:32) [7]

Как одна моя знакомая делала - у нее на выходе функции результат получался на 1 больше. Не долго думая после функции был вставлен оператор Dec(i). Чего разбираться то?


 
KA_   (2003-03-13 10:49) [8]

2 Alex Shulg:
Поднимите мне глюки :) В смысле - код в студию !



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
1-76373
Alex Slater
2003-03-11 12:14
2003.03.24
ListBox


3-76299
IlyaGer
2003-03-04 18:46
2003.03.24
Не работает скроллинг в DBGrid. Как это устранить?


4-76716
Василий2
2002-12-13 11:49
2003.03.24
runas.exe - ОШИБКА!


3-76301
GROL
2003-02-27 21:36
2003.03.24
DBGrid с переменной высотой строк


3-76285
-=Sergeante=-
2003-03-04 11:32
2003.03.24
Interbase + диалап