Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Внизпоказать когда хочу 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.029 c