Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
ВнизOnBefore/AfterChangeComponentCount(Sender: TObject); Найти похожие ветки
← →
Silver_ (2004-02-19 16:00) [0]
OnBefore/AfterChangeComponentCount(Sender: TObject);
илиOnBefore/AfterObjCreate/Destroy(Sender: TObject);
как отловить момент когда меняется значение ComponentCount
т.е. Знать что, где, когда добавляется/удаляется (в смысле контролов)
вобше-то на данном этапе меня интересует конкретно формы
какие и когда создаются что-то Типа OnBefore/AfterCreate; OnBefore/AfterDestroy
Типа как есть у TApplicationEvents.OnActivate а мне нужно OnCreate/Destroy
← →
Владислав (2004-02-19 16:04) [1]Переопределяй метод Notification
← →
Silver_ (2004-02-19 19:19) [2]
> Переопределяй метод Notification
У кого, мне надо по всему приложеню ловить (из одного места) ну чтоб всем формам в OnCreate не писать чего нибудь да и потом у них самих в OnCreate может чего есть мне надо до/после этого чего-то сделать а потом/до пусть себе личный OnCreate срабатывает. Типа так.
← →
Владислав (2004-02-19 19:21) [3]> Silver_ © (19.02.04 19:19) [2]
Ну дык пересмотрите подход к решению изначальной проблемы. На 99 % уверен, что "как отловить момент когда меняется значение ComponentCount" лишь следствие.
← →
Юрий Зотов (2004-02-19 19:34) [4]> Silver_ © (19.02.04 19:19) [2]
Сделайте свой класс TBaseForm (строку {$R *.dfm} из модуля можно и нужно убрать). В нем переопределите Notification и DoCreate. А все формы проекта порождайте от этого класса TBaseForm - тогда переопределенные в нем Notification и DoCreate и будут теми самыми централизованными местами отлова, которые Вам нужны. Вот и все.
← →
Silver_ (2004-02-20 17:05) [5]правельно понял ???
unit MySuperForm;
interface
type
TBaseForm = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
constructor Create; override;
end;
implementation
constructor TBaseForm.Create;
begin
//... Tipa OnBeforeCreate ...
inherited;
//... Tipa OnAfterCreate ...
end;
end.
А в проге
interface
uses MySuperForm;
type
TAnyForm = class( TBaseForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
AnyForm: TAnyform;
implementation
{$R *.dfm}
...
← →
Юрий Зотов (2004-02-20 19:30) [6]type
TBaseForm = class(TForm)
...
protected
procedure Notification(...); override;
procedure DoCreate; override;
...
end;
Notification - относится вот к чему:
"как отловить момент когда меняется значение ComponentCount"
DoCreate - относится вот к чему:
"ну чтоб всем формам в OnCreate не писать чего нибудь да и потом у них самих в OnCreate может чего есть мне надо до/после этого чего-то сделать а потом/до пусть себе личный OnCreate срабатывает"
← →
Silver_ (2004-02-20 20:50) [7]
> когда меняется значение ComponentCount
ну вобшет это мне для одного и надо было
отловить момент создания/Удаления всех форм ну так когда ComponentCount меняется вот тогда и создается/убивается форма (по мёему)
Как я показал так перекрывал Create у TFrame и подумал что у формы так-же проыдет а про DoCreate и вовсе не знал.
Кстати откуда вобще узнать что перекривать DoCreate/Create. Вот ты например откуда узнал чтоб сделать что-нить перед/сразу после создания (нормальный OnCreate) надо перекрыть именно DoCreate а не constructor Create. Это чтоб знать куда рыть а не вопросы таке плодить)
← →
KSergey (2004-02-21 10:33) [8]По-моему, для задачи "сделать что-то при создании формы" перекрытие конструктора или AfterConstruction (он просто без параметра) - в общем-то фиолетово. Равно как и DoCreate (хотя, наверняка можно найти некие хитрые "штучки", конечно, где это будет критично).
Однако именно если ставить вопрос "сделать чтото как в OnCreate" - то видимо эквивалентным будет конечно DoCreate.
Откуда? С.м. исходники VCL, в частности где происходит вызов обработчика, вписанного в OnCreate - и сразу станет понятно ;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c