Главная страница
    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.089 c
15-1199834693
Fedor
2008-01-09 02:24
2008.02.17
Постоянная удаленная работа для Delphi программиста, 2-3 ч.в день


2-1201171310
Виктор
2008-01-24 13:41
2008.02.17
БД


2-1201435769
Alex_Storm
2008-01-27 15:09
2008.02.17
DBCombobox


2-1201256486
Artem
2008-01-25 13:21
2008.02.17
Помогите разобраться с потоком


6-1179711254
Rimd
2007-05-21 05:34
2008.02.17
html файл как текст





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