Главная страница
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.035 c
14-1085119972
Alex_x
2004-05-21 10:12
2004.06.06
тестирование своих программ


14-1084704098
Феликс
2004-05-16 14:41
2004.06.06
НЛП. Чего это?


3-1084564357
Mike Kouzmine
2004-05-14 23:52
2004.06.06
Ошибка в ХП


14-1085298070
Cerber
2004-05-23 11:41
2004.06.06
COM порты


14-1084610097
Sergey Masloff
2004-05-15 12:34
2004.06.06
О танцах с бубном. Может, кому пригодится...