Главная страница
    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.47 MB
Время: 0.026 c
14-1084472694
ИМХО
2004-05-13 22:24
2004.06.06
Куда подевалась Paula Abdul???


6-1081938722
Andreas
2004-04-14 14:32
2004.06.06
Убрать меню в браузере


1-1085391722
}|{yk
2004-05-24 13:42
2004.06.06
По перегрузке


6-1082400273
andrysha
2004-04-19 22:44
2004.06.06
как сделать щоб програма следила за виходом новой версии


3-1084522145
evgen
2004-05-14 12:09
2004.06.06
Инстоляция.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский