![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Один фрейм для разных структур
learner © (2006-07-01 07:56:00)Здравствуйте !
Проблема такая:
Есть две "модели" 1-ая и 2-ая. Одна описана в юнит1, другая в юнит2.
Для каждой надо написать Frame.
Кода в фрейме много и он он практически совпадает для этих моделей
Отличия типа:
Model: TMyModel1; и Model: TMyModel2;
Const My = 1; и Const My = 2;
Как бы мне обойтись одним фреймом ?
Что нибудь типа:
{$IFDEF что-то} const My = 1; {$ELSE} const My = 2; {$ENDIF}
или как нибудь по другому
P.S. одна программа может использовать оба вида фраймов.
Loginov Dmitry (2006-07-01 15:57:00) [1]> В Frame.Create override прверяю: Tag еще равен нулю
Он и будет равным нулю. Инициализация published-свойств автоматически выполняется ПОСЛЕ работы конструктора. Выполняйте необходимые действия в отдельной процедуре, вызываемой, например, из обработчика OnCreate формы.
learner (2006-07-01 10:18:00) [2]>Loginov Dmitry
>Если фреймы кладутся на форму визуально, то добавь в секцию published
>фрейма какое либо свойство
Tag и так published
Фреймы кладутся на форму визуально, устанавливаю Tag = 1
В Frame.Create override прверяю: Tag еще равен нулю
Loginov Dmitry (2006-07-01 09:51:00) [3]> А мне надо определять еще в Frame.Create
Если фреймы создаются в ран-тайме, то сделай override-версию конструктора (в ран-тайме вообще можно выбрать любой путь для достижения цели).
Если фреймы кладутся на форму визуально, то добавь в секцию published фрейма какое либо свойство, например:
property FrameType: TFrameType; {Ctrl + Shift + C}
и создай процедуру регистрации
procedure Register;
begin
RegisterComponents('MyTab', [TMyFrame]);
end;
после чего откомпилируй и установи фрейм как компонент. После этого сможещь менять FrameType в инспекторе объектов.
Но в ран-тайме, конечно, все проще.
learner (2006-07-01 09:38:00) [4]>Loginov Dmitry
Все бы было хорошо, но в Frame.Create Tag еще не принимает новое
значение. Оно устанавливается позже. В CMShowingChanged оно уже
нужное. А мне надо определять еще в Frame.Create :((
Loginov Dmitry (2006-07-01 08:25:00) [5]> Что нибудь типа:
> {$IFDEF что-то} const My = 1; {$ELSE} const My = 2; {$ENDIF}
Лучше через Tag