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

Вниз

Минимизация окна...   Найти похожие ветки 

 
atomAltera ©   (2008-08-14 18:55) [0]

Привет Вем!
Короче, такая ситуация:
Многооконное приложение. Иконка в таск баре отображаться не должна. Имееться обработчик сообщения onClick у иконки в трее. Главная форма может быть как fsNormal, так и fsStayOnTop. Надо, что бы при событии trayIcon.OnClick, если приложения етображаеться, то спрятать его, в противном случае показать. Сложность в слёдующем: если ваполняю "Свернуть все окна" (Win+D), то если главная форма отображаеться и она не fsStayOnTop, то она изчезает вместе с остальными, но потом пояеляеться только после нескольких кликов к трее. После чего, если теряет фокус, тут-же снова изчезает.

Я сделал так:
procedure{ application.onMinimize }TEXE_FORM1.min(dender: tObject);
begin
  Application.ShowMainForm := false;
  ShowWindow(Application.Handle, SW_HIDE);
  ShowWindow(Application.MainForm.Handle, SW_HIDE);
  fv := false;
end;

procedure{ щелчёк в трее }TEXE_FORM1.TrayIcon1Click(Sender: TObject);
begin
  if fv then
  begin
     Application.ShowMainForm := false;
     ShowWindow(Application.Handle, SW_HIDE);
     ShowWindow(Application.MainForm.Handle, SW_HIDE);
     fv := false;
  end
  else
  begin
     Application.ShowMainForm := true;
     //ShowWindow(Application.Handle, SW_RESTORE);
     ShowWindow(Application.MainForm.Handle, SW_NORMAL);
     SetForegroundWindow(Application.MainForm.Handle);
     fv := true;
  end;
end;

procedure{ Сообщение: Активация формы }TEXE_FORM1.wmActivate(var msg: tWMActivate);
begin
  ShowWindow(Application.Handle, SW_HIDE)
end;


Помогите пожалуйста.


 
Сергей М. ©   (2008-08-14 22:18) [1]


> Application.ShowMainForm := false;


> Application.ShowMainForm := true;


Ты вообще-то понимаешь, что ты говоришь этими строчками ?


 
atomAltera ©   (2008-08-15 07:31) [2]

Нет.
Я этот код нашёл в справочнике...


 
Loginov Dmitry ©   (2008-08-15 07:59) [3]

>     //ShowWindow(Application.Handle, SW_RESTORE);
>     ShowWindow(Application.MainForm.Handle, SW_NORMAL);
>
>     SetForegroundWindow(Application.MainForm.Handle);


Видимость формы ты восстановил, но почему не восстанавливаешь видимость Application, или у тебя Delphi2007, где по умолчанию значек в таскбаре относится к главной форме, а не к Application?


> Я этот код нашёл в справочнике...


мдя...



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

Текущий архив: 2008.09.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
15-1217744147
ketmar
2008-08-03 10:15
2008.09.28
как не надо писать код


2-1219056039
dmitry_12_08_74
2008-08-18 14:40
2008.09.28
как послать в диалоговое окно сообщение


15-1217839451
Prohodil Mimo
2008-08-04 12:44
2008.09.28
Вот какое у нас вчера было море :о)


2-1218574646
ProgRAMmer Dimonych
2008-08-13 00:57
2008.09.28
Создание монохромного битмапа на WinAPI


15-1217441494
Alex_PAG
2008-07-30 22:11
2008.09.28
Удаленный рабочий стол и эмуляция клавиш