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

Вниз

Кто Owner невизуального компонента в DesignTime?   Найти похожие ветки 

 
vvolkov ©   (2002-09-06 14:08) [0]

Уважаемые мастера!

Проблема такая, необходимо чтобы невизуальный компонент при добавлении на форму по умолчанию выставлял свои свойства по разному в зависимости от вида формы.
Пишу примерно так,...

constructor TWizardTipMaker.Create(AOwner: TComponent);
begin
inherited;
State:=stBegin;
if AOwner is TfmTipWizard and
(csDesigning in ComponentState) then
AutoButtonControl:=true
else
AutoButtonControl:=false;
end;


Однако не работает. Если компонент попадает на форму типа TfmTipWizard значение AutoButtonControl=false;

Если в Runtime выполнять Create значение выставляется. В чем грабли?...


 
Ученик ©   (2002-09-06 14:25) [1]

В Create еще нет csDesigning, надо проверять AOwner.ComponentState


 
vvolkov ©   (2002-09-06 14:29) [2]

Проблема даже не в этом... даже если вторую часть условия убрать (csDesigning in ComponentState) все равно не работает...


 
Smithson ©   (2002-09-06 14:33) [3]

Насколько я помню, в Design Create выполняется только для установленных компонентов. Может, дело в этом?


 
vvolkov ©   (2002-09-06 14:35) [4]

Да нет! А как я в дизайне положу неустановленный компонент на форму?!


 
serg ©   (2002-09-06 14:43) [5]

При объявлении конструктора указано override ?


 
Ученик ©   (2002-09-06 14:44) [6]

А что такое TfmTipWizard ?


 
vvolkov ©   (2002-09-06 14:47) [7]

To serg. Указано...
TfmTipWizard это наследник от TForm у него определены определенные элементы управления. От него наследуются формы определенного вида на которые и надо ложить разрабатываемый компонент...


 
Ученик ©   (2002-09-06 14:51) [8]

Уверены, что AutoButtonControl:=true не выполняется, сообщение ставили ?


 
vvolkov ©   (2002-09-06 14:58) [9]

Пропертя AutoButtonControl - published. Я в объект инспекторе наблюдаю false. Конечный результат чтобы в нем прописалось правильное значение автоматически...


 
Ученик ©   (2002-09-06 14:59) [10]

>vvolkov © (06.09.02 14:58)
Сообщение ставили ?


 
vvolkov ©   (2002-09-06 15:02) [11]

А как в таком состоянии вывести сообщение? Application.MessageBox не работает.


 
Ученик ©   (2002-09-06 15:05) [12]

uses
Dialogs;

ShowMessage(...), и Application.MessageBox тоже работает


 
vvolkov ©   (2002-09-06 15:07) [13]

Странно... сообщение не появилось...


 
Ученик ©   (2002-09-06 15:09) [14]

До проверки ShowMessage(AOwner.ClassName + ", " + AOwner.ClassType.ClassParent.ClassName)


 
vvolkov ©   (2002-09-06 15:13) [15]

Судя по сообщению все в порядке... получается is не работает...?


 
vvolkov ©   (2002-09-06 15:15) [16]

Тоесть TmmCreatePbxModuleWizard, TfmTipWizard...


 
Ученик ©   (2002-09-06 15:16) [17]

Какой текст показался ?


 
vvolkov ©   (2002-09-06 15:18) [18]

TfmCreatePbxModuleWizard, TfmTipWizard...


 
Ученик ©   (2002-09-06 15:19) [19]

>vvolkov © (06.09.02 15:13)
Вообще то должен работать, странно тут все как-то, чего то Вы от нас скрываете :-)


 
vvolkov ©   (2002-09-06 15:19) [20]

Могу выложить весь исходник... только куда?


 
Старый Паскалист   (2002-09-06 15:21) [21]

Вопрос с классами форм не так прост.
В отличие от других компонентов, к-рые уже в дизайнтайме имеются
в откомпилированном виде, откомпилированного кода формы в дизайнтайме нет.
Вместо неё имеется некая эрзацформа, хотя её класс имеет то же название.


 
vvolkov ©   (2002-09-06 15:23) [22]

тоесть если по простому вместо is надо использовать этот самый AOwner.ClassType.ClassParent.ClassName? Только работать будет только для прямых наследников.
Или писать углублялку до самого TObject :-)


 
vvolkov ©   (2002-09-06 15:25) [23]

To

> Старый Паскалист (06.09.02 15:21)

а может можно както автоматически получить тип этой эрзацформы?


 
Ученик ©   (2002-09-06 15:31) [24]

>vvolkov © (06.09.02 15:23)

function IsClass(A : TObject; const ClassName : string) : Boolean;
var
C : TClass;
begin
C := A.ClassType;
while (C <> nil) and (C.ClassName <> ClassName) do
C := C.ClassParent;
Result := C <> nil
end;



 
vvolkov ©   (2002-09-06 15:35) [25]

Это и есть углублялка... Но все равно спасибо!


 
Ученик ©   (2002-09-06 15:36) [26]

DLL не где не было ?


 
vvolkov ©   (2002-09-06 15:41) [27]

Вроде нет... а причем тут DLL?


 
Ученик ©   (2002-09-06 15:45) [28]

>vvolkov © (06.09.02 15:41)
С ними is не работает


 
vvolkov ©   (2002-09-06 16:48) [29]

Кстати с процедурой указанной в

> Ученик © (06.09.02 15:31)

Все работает. Большое спасибо.



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

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

Наверх




Память: 0.53 MB
Время: 0.019 c
14-61274
Jee
2002-08-23 11:37
2002.09.19
Библиотека SynEdit


1-61212
UnixManiac
2002-09-09 04:57
2002.09.19
Timer


4-61385
Eugene_Jek_Efimochkin
2002-07-17 23:37
2002.09.19
принимать ярлыки URL из IE


14-61262
Mega
2002-08-23 00:03
2002.09.19
Fujitsu MPG3204AT......


14-61275
VZ-KZ
2002-08-20 15:39
2002.09.19
Интересный вопрос!