Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1085408550
$Hic0
2004-05-24 18:22
2004.06.06
Events


1-1085027421
Schummi
2004-05-20 08:30
2004.06.06
Про Динамич. переменные


3-1084419857
Адмирал
2004-05-13 07:44
2004.06.06
Список БД в InterBase/FireBird


1-1085036335
cardinal
2004-05-20 10:58
2004.06.06
Многострочность в TreeView


1-1084669856
Алекс А
2004-05-16 05:10
2004.06.06
Какие есть библиотеки для работы с числами размером до 25 знаков?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский