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

Вниз

форма не хочет Show поверх всех   Найти похожие ветки 

 
fellow   (2008-09-04 15:22) [0]

Приветствую!

есть form1 и form2
у form2.formstyle = fsStayOnTop

по двойному клику на иконке в трее вызываю метод form2.show
все происходит как надо, форма поверх всех..
если ее закрыть и открыть снова, то тоже все ок..

но после некоторых действий:
1. form1.show (у нее formstyle = fsNormal,)
2. form1.close (прячется в трей)
3. активируем любое приложение
у form2 пропадает свойство "поверх всех окон" и оно прячется за активными окнами других приложений.

даже повторный вызов метода form2.show не дает никаких результатов оно даже не выводится "вперед"..
пытался закрывать его перед show - не помогает..
bringtofront - не помогает, даже если его вызвать отдельно, хоть он уже есть в form.show..

как выводить form2 поверх в любом случае?


 
Сергей М. ©   (2008-09-04 15:27) [1]


> активируем любое приложение
> у form2 пропадает свойство "поверх всех окон" и оно прячется
> за активными окнами других приложений


StayOnTop имеет смысл только в контексте окон текущего приложения.


> как выводить form2 поверх в любом случае?


Никак.
Ничто не мешает любому другому приложению возжелать того же - как будете делить с ним право "лежать сверху" ?


 
Плохиш ©   (2008-09-04 15:29) [2]


> форма не хочет Show поверх всех

Хорошая форма.


 
Leonid Troyanovsky ©   (2008-09-04 15:35) [3]


> fellow   (04.09.08 15:22)  

> у form2 пропадает свойство "поверх всех окон" и оно прячется
> за активными окнами других приложений.

http://www.rsdn.ru/Forum/?mid=466741

--
Regards, LVT.


 
fellow   (2008-09-04 15:37) [4]

но ведь при первом вызове - form2 появляется поверх всех окон приложений открытых до...


 
fellow   (2008-09-04 15:41) [5]


> StayOnTop имеет смысл только в контексте окон текущего приложения.


ответ [4] был на ответ [1]


 
Сергей М. ©   (2008-09-04 15:46) [6]


> fellow   (04.09.08 15:37) [4]


Ну и что ?

А потом ты жмакаешь на иконку другого приложения, активируешь при этом открытые им окна, и какое-то из этих окон при активации вправе стать переднеплановым.


 
Правильный$Вася   (2008-09-04 15:50) [7]


> но ведь при первом вызове - form2 появляется поверх всех
> окон приложений открытых до...

так это ж просто единственная отрытая форма твоего приложения, на которое ты переключился


 
fellow   (2008-09-04 15:54) [8]

как показать кнопку на панели задач для второй формы?


 
Правильный$Вася   (2008-09-04 15:57) [9]


> как показать кнопку на панели задач для второй формы?

при наличии первой "кнопки"?


 
fellow   (2008-09-04 16:01) [10]


> при наличии первой "кнопки"?


в любом случае: если форма выведена на экран, то чтобы у нее была своя кнопка


 
Тын-Дын ©   (2008-09-05 10:13) [11]


> как выводить form2 поверх в любом случае?


В Обработчике OnIdle вызывай SetWindowPos со вторым параметром HWND_TOPMOST.


 
fellow   (2008-09-05 14:43) [12]


> В Обработчике OnIdle вызывай SetWindowPos со вторым параметром
> HWND_TOPMOST.


работает, но я поместил этот метод:
  SetWindowPos(Form2.Handle,HWND_TOPMOST,0,0,Form2.Width,Form2.Height,SWP_NOMOVE);

после form2.show; корректно ли это ?

иначе, если это делать в обработчике OnIdle, то окно того приложения которое активировалось до form2.close, после form2.close перестает реагировать на клики мыши

например: в delphi я не могу нажать на кнопку "program RESET"


 
Тын-Дын ©   (2008-09-05 22:23) [13]


> например: в delphi я не могу нажать на кнопку "program RESET"


Вот пример:

procedure TFormLauncherMain.Idle(Sender: TObject; var Done: Boolean);
var
 Pt: TPoint;
 R: TRect;
begin
Shell_NotifyIcon(NIM_ADD,@nid);
 GetCursorPos(Pt);
  if  DeletePresent then
      if (FormDelete.Showing) then
      begin
         R := Rect(FormDelete.Left,FormDelete.Top,FormDelete.Left+FormDelete.Width,
           FormDelete.Top+FormDelete.Height);
         if (not PtInRect(R,pt))  then
           SetWindowPos(FormDelete.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
         exit;
       end;
   if (EditPresent) and (not DeletePresent)  then
      if (FormEdit.Showing) then
      begin
         R := Rect(FormEdit.Left,FormEdit.Top,FormEdit.Left+FormEdit.Width,FormEdit.Top+FormEdit.Height);
         if (not PtInRect(R,pt))  then
           SetWindowPos(FormEdit.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
       end;
   Done:=True;
end;


 
Тын-Дын ©   (2008-09-05 22:23) [14]

ps.
КОд не мой.


 
DVM ©   (2008-09-05 22:47) [15]


> КОд не мой.

отмазался :)


 
Тын-Дын ©   (2008-09-06 00:41) [16]


> DVM ©   (05.09.08 22:47) [15]
> > КОд не мой.отмазался :)


Ну... я лишь для потому добавку дописал, что оформление не такое, какое у меня;)


 
Германн ©   (2008-09-06 00:49) [17]


> Ну... я лишь для потому добавку дописал, что оформление
> не такое, какое у меня;)
>

Жаль, что у тебя не такое. На мой скус очень грамотное оформление. От моего отличается только одним нюансом. Но сей нюанс в коде от ЮЗ выглядит также как и в твоём примере. :)



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

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

Наверх





Память: 0.49 MB
Время: 0.058 c
15-1219314183
Vlad Oshin
2008-08-21 14:23
2008.10.12
Испортился DVD диск. Как можно попытаться скопировать?


15-1219352572
Германн
2008-08-22 01:02
2008.10.12
Вопрос к тем, кому за 50


2-1220392769
Drone
2008-09-03 01:59
2008.10.12
Выпадающее Меню и другие вопросы


15-1219112093
Slider007
2008-08-19 06:14
2008.10.12
С днем рождения ! 19 августа 2008 вторник


2-1220622285
Demo_nik
2008-09-05 17:44
2008.10.12
Как поределить путь к каталогу в котором нахожусь?





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