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

Вниз

Один фрейм для разных структур   Найти похожие ветки 

 
learner ©   (2006-07-01 07:56) [0]

Здравствуйте !
Проблема такая:
Есть две "модели" 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 08:25) [1]

> Что нибудь типа:
> {$IFDEF что-то} const My = 1; {$ELSE} const My = 2; {$ENDIF}


Лучше через Tag


 
learner ©   (2006-07-01 09:38) [2]

>Loginov Dmitry
Все бы было хорошо, но в Frame.Create Tag еще не принимает новое
значение. Оно устанавливается позже. В CMShowingChanged оно уже
нужное. А мне надо определять еще в Frame.Create :((


 
Loginov Dmitry ©   (2006-07-01 09:51) [3]

> А мне надо определять еще в Frame.Create


Если фреймы создаются в ран-тайме, то сделай override-версию конструктора (в ран-тайме вообще можно выбрать любой путь для достижения цели).

Если фреймы кладутся на форму визуально, то добавь в секцию published фрейма какое либо свойство, например:

property FrameType: TFrameType; {Ctrl + Shift + C}

и создай процедуру регистрации

procedure Register;
begin
 RegisterComponents("MyTab", [TMyFrame]);
end;

после чего откомпилируй и установи фрейм как компонент. После этого сможещь менять FrameType в инспекторе объектов.

Но в ран-тайме, конечно, все проще.


 
learner ©   (2006-07-01 10:18) [4]

>Loginov Dmitry
>Если фреймы кладутся на форму визуально, то добавь в секцию published
>фрейма какое либо свойство
Tag и так published
Фреймы кладутся на форму визуально, устанавливаю Tag = 1
В Frame.Create override прверяю: Tag еще равен нулю


 
Loginov Dmitry ©   (2006-07-01 15:57) [5]

> В Frame.Create override прверяю: Tag еще равен нулю


Он и будет равным нулю. Инициализация published-свойств автоматически выполняется ПОСЛЕ работы конструктора. Выполняйте необходимые действия в отдельной процедуре, вызываемой, например, из обработчика OnCreate формы.



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

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

Наверх




Память: 0.48 MB
Время: 0.046 c
3-1147188386
demon81
2006-05-09 19:26
2006.07.23
Переподключение к MS SQL Server при ошибке


15-1150731148
OSokin
2006-06-19 19:32
2006.07.23
Что только не понапишут в своих работах...


15-1150798694
Иксик
2006-06-20 14:18
2006.07.23
Интересная статья про горячую линию между Москвой и Вашингтоном


2-1152019375
dr.dre
2006-07-04 17:22
2006.07.23
общее


15-1148326662
Pavia
2006-05-22 23:37
2006.07.23
ОС на паскале?