Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.17;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
15-1200161665
Черный Шаман
2008-01-12 21:14
2008.02.17
Высокая, высокая наука.


15-1200656760
Галинка
2008-01-18 14:46
2008.02.17
Чем бы начертить блок-схему


15-1200392916
Ega23
2008-01-15 13:28
2008.02.17
Service средствами Delphi : возможено ли?


3-1191395182
zorik
2007-10-03 11:06
2008.02.17
MySQL и Delphi


2-1201186046
Knob
2008-01-24 17:47
2008.02.17
Как сделать прозрачность