Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

Проблемы при открытии ФОРМЫ   Найти похожие ветки 

 
Slim   (2007-11-07 01:45) [0]

Доброго времени суток уважаемые!
Помогите:
Есть MDI приложение, в нем есть Childe форма (Form3). Мне нужно из Form3 открыть такую же форму но уже модально:
Пишу так:

Form3Sl:=TForm3.Create(self);
Form3Sl.FormStyle:=fsNormal;
Form3Sl.BorderStyle:=bsDialog;
Form3Sl.Width:=800;Form3Sl.Height:=600;
Form3Sl.WindowState:=wsNormal;
Form3Sl.Position:=poScreenCenter;
Form3Sl.BorderIcons:=[];
Form3Sl.Visible:=False;
Form3Sl.ShowModal;


Все работает, но ПРИ ОТКРЫТИИ ФОРМЫ ВСЕ "МОРГАЕТ" (видно что в некоторые доли секунды форма появилась в одном углу, потом изменила размер....)

Как решить проблему???
Спасибо всем заранее!
С уважением SLIM


 
{RASkov}   (2007-11-07 02:14) [1]

> [0] Slim   (07.11.07 01:45)
> Все работает, но ПРИ ОТКРЫТИИ ФОРМЫ ВСЕ "МОРГАЕТ" (видно
> что в некоторые доли секунды форма появилась в одном углу,
> потом изменила размер....)

Дело в том, что форма создается дочерней, а дочернюю форму спрятать нельзя вот и моргает... при переводе ее из дочки в обычную...
Попробуй изменить структуру программы....

Да.... и вот в этом вообще смысла никакого нет (прячем перед показом)
Form3Sl.Visible:=False;
Form3Sl.ShowModal;

:)
Тогда бы уж лучше так:
Form3Sl:=TForm3.Create(self);
Form3Sl.FormStyle:=fsNormal;
Form3Sl.Hide;
Form3Sl.BorderStyle:=bsDialog;
Form3Sl.Width:=800;Form3Sl.Height:=600;
Form3Sl.WindowState:=wsNormal;
Form3Sl.Position:=poScreenCenter;
Form3Sl.BorderIcons:=[];
Form3Sl.ShowModal;


Намного лучше не станет, но смысла у Visible:=false(Hide) появится больше ;)


 
Loginov Dmitry ©   (2007-11-07 08:01) [2]

Если хочешь избежать моргания, то измени в инпекторе объектов ее тип на "нормальный", а после создания, если это необходимо, делай ее дочерней.


 
Slim   (2007-11-07 08:20) [3]


> Намного лучше не станет, но смысла у Visible:=false(Hide)
> появится больше ;)

: ) Спасибо! Хоть смусл у программы улучшиться!


> Если хочешь избежать моргания, то измени в инпекторе объектов
> ее тип на "нормальный", а после создания, если это необходимо,
>  делай ее дочерней.

Исходно так и есть : ( уже все перепробовал, что мог! Результат то же! : (


 
Юрий Зотов ©   (2007-11-07 10:53) [4]

> Slim   (07.11.07 08:20) [3]

Этого не может быть. Код этого варианта - в студию, плз.

Моргание у Вас происходит из-за того, что дочерняя форма невидимой быть не может. Поэтому, как только Вы создали Form3Sl, она тут же становится видимой (причем ее размеры и позиция определяются не Вами, а системой). Далее Вы меняете ей стиль на fsNormal и производите другие манипуляции - все это приводит к пересозданию окна (притом неоднократному), к изменению позиции и размеров формы - короче говоря, к многократной перерисовке окна, да еще и в разных местах экрана. Вот и получается моргание.

Все эти подготовительные манипуляции надо проводить на невидимой форме и только после их завершения вызывать ShowModal. А поскольку дочерняя форма невидимой быть не может, надо поступить так, как сказано в [2]. И если все правильно сделать, то не работать оно просто не может.


 
Slim   (2007-11-07 11:00) [5]


> Юрий Зотов ©   (07.11.07 10:53) [4]

Понял! Сейчас буду пробовать! Спасибо большое Юрий Зотов, Loginov Dmitry, {RASkov} ....


 
Slim   (2007-11-07 11:39) [6]


> Если хочешь избежать моргания, то измени в инпекторе объектов
> ее тип на "нормальный", а после создания, если это необходимо,
>  делай ее дочерней.

Все работает СПАСИБО! Единственное, надо было еще в исходных значениях формы отключить ее видимость, что бы она создавалась НЕВИДИМО!


 
Юрий Зотов ©   (2007-11-07 11:49) [7]

> Slim   (07.11.07 11:39) [6]

Просто не надо было эти исходные значения трогать. По умолчанию у форм Visible=False.


 
Slim   (2007-11-07 12:25) [8]


> Просто не надо было эти исходные значения трогать. По умолчанию
> у форм Visible=False.

Буду ЗНАТЬ, спасибо!



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

Форум: "Основная";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
15-1200502181
rts111
2008-01-16 19:49
2008.02.17
Подскажите, где найти описание формата *.doc?


4-1182994675
SPeller_work
2007-06-28 05:37
2008.02.17
WebBrowser и ресурсы


6-1180410284
Dmitry_177
2007-05-29 07:44
2008.02.17
Перехват трафика


6-1178645354
flaxe
2007-05-08 21:29
2008.02.17
Съэмулировать клиент


2-1201167880
AntonUSAnoV
2008-01-24 12:44
2008.02.17
про использование ключей продления регистрации





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