Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизСвойство ComponentState у TForm в DreamDesigner Найти похожие ветки
← →
Priest (2005-05-18 12:49) [0]Использую DreamDesigner. Свойство ComponentState равно []. Как узнать, что форма (а не компонент) находится в режиме разработке?
← →
Юрий Зотов © (2005-05-18 13:10) [1]Как обычно: if csDesigning in ComponentState then...
В среде Dream тоже работает.
← →
Priest (2005-05-18 13:35) [2]Для компонента Да. А вот для формы у меня не работает. Понимаете, оно постоянно имеет значение [].
← →
Юрий Зотов © (2005-05-18 14:59) [3]Гм... с TDCLiteDesigner у меня все было ОК и для формы тоже. Может, не тот класс дизайнера используете? Он там не один.
Еще csDesigning можно выставить принудительно при активации дизайнера (см. SetDesigning), или проверять не ComponentState, а активность дизайнера.
← →
Priest (2005-05-18 16:08) [4]Я сделал по другому....
Вообще я проверял ComponentState в конструкторе формы. А как оказалась этого делать нельзя. У меня целый ряд переопределённых классов из Dream, но содаётся форма вот так:
TaxIDEFormObject = class(TIDEFormObject)
procedure TaxIDEFormObject.CreateFromStream(FormStream: TStream);
var
Hooked: boolean;
// I: Integer;
// fm: TForm;
// CurrComp, NewComp: TComponent;
begin
CreateDesigner(StreamContainsDataModule(FormStream), False);
with FormDesigner do
try
SetDesign(FormInstance, true);
Hooked := False;
................................
Вот как раз строка CreateDesigner(StreamContainsDataModule(FormStream), False); вызывает создание формы, поэтому вызывается конструктор (где я и проверял ComponentState).
А после конструктора выполнилась строка SetDesign(FormInstance, true); которая и выставила ComponentState.
Переделал по другому и всё заработало....
Спасибо за помощь
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.037 c