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

Вниз

Вот баян: обработчик FormShow срабатывает не там !!!   Найти похожие ветки 

 
Fanny   (2005-09-08 22:14) [0]

есть свои обработчики Form.Show и Form.Hide, есть иконка в трее с меню
так вот, когда меню вываливается по клику на иконке, срабатывает обработчик Form.Show
а когда пропадает (клик на пункте в меню или просто где угодно - меню исчезает), срабатывает Form.Hide

я не понял, так и должно быть ???  Как избавиться ???


 
Kozz   (2005-09-12 12:24) [1]

хых, а ведь действительно!
может где-то в свойствах цепляется


 
VIP80   (2005-09-12 12:48) [2]

Для примера функция обрабатывающая клик по иконке в трее. Вываливается меню, форма не появляется. В программе одна форма и в процедуре FormCreate прописано:
Application.ShowMainForm := False;
ShowWindow(Application.Handle, SW_HIDE);

Обработка клика по иконке в трее:
procedure TfrmMain.WMICON(var msg: TMessage);
var P : TPoint;
begin
case msg.LParam of
WM_LBUTTONDOWN:
 begin
 // Бла-бла-бла
 
 end;
WM_RBUTTONDOWN:
 begin
  GetCursorPos(p);
  SetForegroundWindow(Application.MainForm.Handle);
  mnuPopup.Popup(P.X, P.Y);
 end;
end;
end;

Показываем форму (по клику соответствующего пункта меню)

Обработка клика:
procedure TfrmMain.mnubtnSettingsClick(Sender: TObject);
begin
if Application.ShowMainForm =True then exit;
ShowAll;
end;

procedure TfrmMain.ShowAll;
var
i,j:Integer;
begin
Application.ShowMainForm:=True;
ShowWindow(Application.Handle, SW_SHOW);
ShowWindow(Application.MainForm.Handle, SW_SHOW);
for I := 0 to Application.MainForm.ComponentCount -1 do
     if Application.MainForm.Components[I] is TWinControl then
       with Application.MainForm.Components[I] as TWinControl do
         if Visible then
         begin
           ShowWindow(Handle, SW_SHOWDEFAULT);
           for J := 0 to ComponentCount -1 do
             if Components[J] is TWinControl then
             ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
 end;
end;


 
Vladimir Kladov   (2005-09-12 19:31) [3]

если PopupMenu показывается через PopupEx, так и должно быть: форма показывается, но за пределами экрана. Это борьба с глюками виндовс.


 
Fanny   (2005-09-13 16:32) [4]

Ё-моё !!!!!!!!!!!!!!
Так оно и есть !!!!!!!!!!!!!!!

Я в принципе вначале делал и просто через Popup, только там дополнительные "фичи" пришлось поставить (проверял только в Win98 - всё работает), а потом нашёл совет, что PopupEx "сделан специально для устранения этого глюка" и переключился на него.

2Vladimir Kladov
Спасибо за разъяснение !


 
Kozz   (2005-09-14 18:25) [5]

2Kladov

мож стоит задокументировать?


 
Vladimir Kladov   (2005-09-14 19:47) [6]

давно уже сделано. комментарии см.:
   function PopupEx( X, Y: Integer ): Integer; {!ecm}
   {* This version of popup command is very useful, when popup menu is activated
      when its parent window is not visible (e.g., for a kind of applications,
      which always are invisible, and can be activated only using tray icon).
      PopupEx method provides correct tracking of menu disappearing when mouse
      is clicked anywhere else on screen, fixing strange menu behavior in some
      Windows versions (NT).
      |<br>
      Actually, when PopupEx used, parent form is shown but below of visible
      screen, and when menu is disappearing, previous state of the form (visibility
      and position) are restored. If such solvation is not satisfying You,
      You can do something else (e.g., use region clipping, etc.) }


 
Kozz   (2005-09-16 13:04) [7]

извиняюсь за оффтопик, но накипело -
проклятый мастдай!!!!!!!!!!
всё надо какие-нить сальто-мортале вытворять, чтобы чо-то нормальное получилось!!!



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
2-1146493728
AlexanderMS
2006-05-01 18:28
2006.05.21
Выбранный элемент ListBox теряет фокус


2-1146585782
Stupid
2006-05-02 20:03
2006.05.21
как присвоить S значение выделеной строки из ListBox


8-1134806433
Kot Andrei
2005-12-17 11:00
2006.05.21
"Упрощение" цветов на фотографии


2-1146338746
Галинка
2006-04-29 23:25
2006.05.21
Delphi 2005 &amp; ADO


2-1146665368
asd
2006-05-03 18:09
2006.05.21
Как сортировать в DBGRID по дате?