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

Вниз

показать когда хочу MDI Child Окна   Найти похожие ветки 

 
sergvc   (2004-05-24 17:54) [0]

Подскажите пожалуйста, как можно управлять отображением MDI Child окон. Если я хочу сначала проинициализировать какие-то параметры (например размер и положение),  и только потом показать окно пользователю. Если это делать после отображения получается эфект "скакания" окна .


 
TUser   (2004-05-24 17:55) [1]

Сначала создаешь, назначаешь параметры, только потом - Show


 
Семен Сорокин ©   (2004-05-24 17:59) [2]

sergvc   (24.05.04 17:54)  
Переопредели конструктор


 
WebErr ©   (2004-05-24 18:10) [3]

Удали из главного .pas фразу типа

Application.CreateForm(SomeMDIChildForm, TSomeMDIChildForm);

и Create её только там, где надо

SomeMDIChildForm := TSomeMDIChildForm.Create(Application);


 
sergvc   (2004-05-24 18:18) [4]

Вариант типа - Сначала создаешь, назначаешь параметры, только потом - Show не подходит для MDI т.к при создании окна  

PropForm := TForm4.Create(Application);

окно MDI отображается СРАЗУ !!!! Я даже не вызываю потом

PropForm.Show

Переопределить конструктор - насколько глубоко его переопределять?
на уровне Initialize?


 
Семен Сорокин ©   (2004-05-24 18:20) [5]

TMyMdiForm = class(TForm)
...
public
 constructor Create(AOwner: TComponent; MyInitData: TData); reintroduce;
...
end;


 
WebErr ©   (2004-05-24 18:22) [6]


> Семен Сорокин ©   (24.05.04 18:20) [5]

Ну что за извраты посреди рабочего дня! :)


 
sergvc   (2004-05-24 18:31) [7]

Код работает идеально для SDI приложения

PropForm := TForm4.Create(Application);
PropForm.Left := 100;
PropForm.Top := 200;
PropForm.Show;  -- в этот момент окно отобразиться

В случае MDI :

PropForm := TForm4.Create(Application); -- окно отобразиться здесь

PropForm.Left := 100; -- этот код уже офтопик
PropForm.Top := 200;

Может есть варианты инициализации перед отображением для MDI Child?


 
WebErr ©   (2004-05-24 18:34) [8]


> В случае MDI :
> PropForm := TForm4.Create(Application); -- окно отобразиться
> здесь

Неправда!
Окно не отобразится после Create, пока вы его Show не сделаете.
Проверьте, не вызываете ли вы Show в обработчике OnCreate формы.


 
sergvc   (2004-05-24 18:42) [9]

В меню Delphi делаю: new -> other -> project -> MDI Application
Далее прогоняю по F8 до места

 Child := TMDIChild.Create(Application);

после выполнения только этого оператора в окне приложения появляется дочерняя форма - или у меня глюки?


 
sergvc   (2004-05-24 18:53) [10]

Точно - проверил ещё раз. Окно появляется в момент вызова оператора  Child := TMDIChild.Create(Application);


 
Игорь Шевченко ©   (2004-05-24 19:01) [11]

WebErr ©   (24.05.04 18:34)

Не надо быть таким, надо свои утверждения проверять.

Для MDIChild-форм свойство Visible всегда установлено в True, так что показываться они будут сразу после вызова конструктора.
Событие OnShow у них возникает раньше, чем OnCreate,
вариант Семен Сорокин © (24.05.04 18:20) [5] правильный.

Ей-богу, опять подписываться начну :)


 
sergvc   (2004-05-24 19:09) [12]

Для MDIChild форм не работает метод Hide - поэтому окно отображается сразу. Если вызвать метод Show таким образом, то добиваемся только того, что окно не прыгает по всему экрану в момент создания.

procedure TForm4.FormShow(Sender: TObject);
begin
//
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1084730549
Rouse_
2004-05-16 22:02
2004.06.06
Вот так то вот :))))


3-1084454956
Адмирал
2004-05-13 17:29
2004.06.06
Создание БД из приложения или выполнение скрипта


6-1081625721
Shutov
2004-04-10 23:35
2004.06.06
Компоненты для работы с Bluetooth


1-1085385472
Senator
2004-05-24 11:57
2004.06.06
печать


6-1081493685
oaken
2004-04-09 10:54
2004.06.06
Web Applications -> CrossPlatform