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

Вниз

Событие OnChange   Найти похожие ветки 

 
Frist_May   (2003-07-07 09:27) [0]

Здравствуйте! Подскажите пожалуйста, можно ли через цикл определить у какого компонента есть событие OnChange, то есть что то типа такого:

for i:=0 to ComponentCount-1 do
begin
if Components[i]. ... = что то такое на проверку OnChange
then ShowMessage("Есть событие OnChange!")
else ShowMessage("Нет события OnChange!");
end;


 
Skier ©   (2003-07-07 09:30) [1]

1) RTTI
2) см. TypInfo.pas
3) http://www.softforum.ru/html/index.asp?id=items&group=cps.borland.delphi&topic=item221101


 
Frist_May   (2003-07-07 09:34) [2]

Спасибо


 
Frist_May   (2003-07-08 13:43) [3]

В продолжение: все что там описано помогает узнать и заменить нужное событие на мое, а можно ли сделать так, чтобы произошла не замена, а добавление, то есть выполнилось бы мое событие, а затем то, которое было описано в явном виде...


 
BOA_KAA ©   (2003-07-08 13:48) [4]

Пиши в отдельной процедуре и добавляй


 
Poirot ©   (2003-07-08 13:54) [5]

а ты сохраняй указатель на ту процудуру... исполняй свою и потом выполняй сохранённую...


 
Frist_May   (2003-07-08 14:03) [6]

То Poirot © (08.07.03 13:54)
Я тоже так думал, просто хотел узнать, может кто то подобное делал и есть какой нибудь другой способ?


 
Skier ©   (2003-07-09 08:23) [7]

>Frist_May (08.07.03 13:43)

> можно ли сделать так, чтобы произошла не замена, а добавление,
> то есть выполнилось бы мое событие, а затем то, которое
> было описано в явном виде...

Обычно для этого в VCL имеются перекрываемые методы,
например для TButton это TButton.Click
Можно в потомке перекрыть TButton.Click и добавить какие-то свои
действия до слова inherited
Если я правильно понял проблему...


 
Frist_May   (2003-07-09 09:17) [8]

То Skier © (09.07.03 08:23)
с эти я согласен, но определение событие OnChange я хочу делать в родителе формы, а в ней я не знаю какие компоненты лежат на потомке. Вот я и хочу узнать, если у компонента есть данное событие, то перед его выполнение некоторой переменной в родительской форме надо присвоить значение "истина", которая говорит о том, что на форме произошли изменения... То что ты мне посоветовал, делает замену события, а мне надо бы добавление...


 
Skier ©   (2003-07-09 09:31) [9]

>Frist_May (09.07.03 09:17)
Расскажи про свою задачу поподробнее...


 
Frist_May   (2003-07-09 09:45) [10]

есть базовый класс формы
TFormFounder = class(TForm)
делаю новую форму
TFormVocabsEd = class(TFormFounder)
на форме TFormVocabsEd могут быть компоненты к примеру
Label1: TLabel;
EdFull: TEdit;
CheckBlock: TCheckBox;
Допустим у компонента EdFull есть событие EdFullChange(Sender: TObject);

Так вот, если я изменяю текст в EdFull, то мне надо сначало в классе TFormFounder переменной FChangeText присвоить True, а затем выполнить EdFullChange... Проблема в том, что я не знаю какие компоненты лежат на форме TFormVocabsEd, какие из них имеют событие OnChange и у каких есть тело процедур OnChange...


 
Skier ©   (2003-07-09 10:09) [11]

Тогда видимо только в цикле с использованием RTTI и
заменой событий на необходимые...


 
Frist_May   (2003-07-09 10:32) [12]

а можно ли выполнить процедуру знаю только указатель на нее?


 
Skier ©   (2003-07-09 10:39) [13]

см. TMethod


 
Frist_May   (2003-07-09 10:49) [14]

type
TMethod = record
Code, Data: Pointer;
end;

а как здесь сделать так, что бы метод выполнился?


 
Frist_May   (2003-07-09 14:27) [15]

Кто нибудь может подсказать, как выполнить метод, зная только его указатель?



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
14-67964
Marser
2003-06-28 11:54
2003.07.21
---|Ветка была без названия|---


6-67936
IronWit
2003-05-15 11:09
2003.07.21
как из dll получить кол-во писем на pop3 сервере


14-68017
Soft
2003-07-03 12:21
2003.07.21
Любой программист хоть иногда занимается хакерской работой


3-67700
ses
2003-06-27 10:56
2003.07.21
ADO - из программы вызвать диалог построения строки соединения


14-67960
Карелин Артем
2003-07-03 15:10
2003.07.21
Программирование под Win CE на дельфи.