Текущий архив: 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.018 c