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

Вниз

Помогите разобраться с формой   Найти похожие ветки 

 
nsvi   (2004-04-14 07:20) [0]

Уважаемые программисты!
2 вопроса, связанные с формой.
1. Имеется главная форма, она может раскрываться, занимая весь экран. При раскрытии создается вторая форма, на которой одна кнопка Restore, по которой главная форма восстанавливает первоначальные размеры. Все это работает, кроме того, что при активации раскрытой главной формы, то есть когда вторая форма теряет фокус, например, при щелчке мышью по ней, вторая форма исчезает. Вторая форма имеет свойство StayOnTop=true;, но оно не помогает. Попытки использовать функцию API SetWindowPos безрезультатны. Что можно сделать в этой ситуации? Вот код с API функцией:

procedure TForm1.FullScreen;
begin
       if not Assigned( Form2 ) then
       NewForm2( Form2, Applet );
       Form2.Form.Show;                SetWindowPos(Form2.Form.GetWindowHandle,HWND_TopMost,107,192,88,45,swp_noActivate);
end;

а вот с присвоением стиля
procedure TForm1.FullScreen;
begin
       if not Assigned( Form2 ) then
       NewForm2( Form2, Applet );
       Form2.Form.Show;
       Form2.Form.ExStyle:=WS_EX_TOPMOST;
end;
и так
procedure TForm1.FullScreen;
begin
       if not Assigned( Form2 ) then
       NewForm2( Form2, Applet );
       Form2.Form.ExStyle:=WS_EX_TOPMOST;
       Form2.Form.Show;
end;
2. Событие FormShow должно наступать после вывода главной формы на экран. Мне надо показать при запуске программы на ее фоне модальное окно с текстом поверх окна программы. Однако, сначала показывается окно с текстом и только когда я его закрываю, выводится главное окно. Почему так происходит?


 
SPeller ©   (2004-04-14 08:14) [1]

1. Зачем мучаться со вторым окном? Сделай на форме кнопочку, которая и будет восстанавливать прежний размер.
2. В OnShow модальной формы попробуй сделать главной Invalidate.


 
Delphi5.01 ©   (2004-04-14 08:29) [2]

Form2.Form.ShowModal?


 
nsvi   (2004-04-14 11:10) [3]

В том-то и дело, что форма FullScreen без рамки и кнопок и нет возможности поставить кнопку. Окно должно быть как в том же блокноте окно поиска или в WordPad
А форма немодальная, то есть именно Form2.Form.Show;


 
nsvi   (2004-04-14 11:24) [4]

>2. В OnShow модальной формы попробуй сделать главной Invalidate.

попробовал, без результатно!


 
SPeller ©   (2004-04-14 12:03) [5]


> попробовал, без результатно!

А Show?

На счет второго окошка - сделай его дитём от главной формы, а не от аплета. Тогда она просто физически не сможет спрятаться за неё :)


 
nsvi   (2004-04-14 13:45) [6]

Попробую


 
nsvi   (2004-04-14 14:11) [7]

По первому пункту вопрос снят, спасибо!

> попробовал, без результатно!

>А Show?


Еще объясню. При запуске программы должно сначала показаться главное окно программы, затем, после вывода главного окна выводится обычное модальное окно, которое потом закрывается по нажатию кнопки. А оно выводится перед выводом главного окна, несмотря на то, что модальное окно запускается при наступлении события KOLForm1OnShow. А Form2 - именно модальное, то есть как раз Form2.Form.ShowModal


 
SPeller ©   (2004-04-14 17:58) [8]

Попробуй в OnIdle аплета вставить вызов модальной формаы.


 
nsvi   (2004-04-15 13:20) [9]

Всем спасибо. Во всем разобрался. По второму вопросу надо было просто в обработчике FormCreate после всех установок вставить Form.Show, а после этого выводить остальные окна, тогда они лягут на основное.



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

Форум: "KOL";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
14-1096745495
Gero
2004-10-02 23:31
2004.10.24
Смена материнки


14-1096750207
Поручик
2004-10-03 00:50
2004.10.24
Помогите найти


14-1096691467
d.l
2004-10-02 08:31
2004.10.24
Нужен аналог Assist для Delphi


1-1097139675
sirsergio
2004-10-07 13:01
2004.10.24
Посветка текста в TMemo


4-1095678371
Difar
2004-09-20 15:06
2004.10.24
Как сохранить bmp в Dll





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