Programowanie w języku Delphi » FAQ

Jak dodać pozycję do menu jeżeli kliknie się na ikonę aplikacji na pasku zadań

Jeżeli program jest uruchomiony i kliniesz prawym przyciskiem na na ikonę programu to rozwinie się menu ze standardowymi opcjami (Zamknij, Minimalizuj, itp.). Można dodać tam swoją pozycje - wystarczy odwołać się do WinAPI.

Umieść deklarację nowej procedury:

  private
    procedure WMNewPos(var Msg : TMsg; var Handle : Boolean);

Teraz definicja powinna wyglądać tak:

procedure TForm1.WMNewPos(var Msg: TMsg; var Handle: Boolean);
begin
  if (Msg.message = WM_SYSCOMMAND) and (Msg.wParam = 101) then
    ShowMessage('Cze!');
    Handle := True;
  end;
end;
To była obsługa naszej nowej pozycje - wyświetli się okno z informacją. Teraz wygeneruj procedurę OnCreate:
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  AppendMenu(GetSystemMenu(Handle, FALSE), MF_STRING, 101, 'Kliknij mnie!');
  Application.OnMessage := WMNewPos;
end;

3 komentarze

michalkopacz 2005-08-01 23:08

Zamiast Application.Handle należy napisać samo Handle, jeśli tego nie uczynimy, elment zostanie dodany do menu nie formularza, tylko okna aplikacji (obiekt Application wskazuje na okno, zwane oknem aplikacji, które służy powiązaniu w całość wszystkich okien programu)

my_nick 2003-04-07 16:48

bo obie linijki po then powinny być w begin i end.

Piasiu 2003-03-23 10:30

Super - pozycja jest ale dzieki tej linijce:
  Application.OnMessage := WMNewPos;
aplikacja jakby nie reaguje na nic, innym slowy mowic WISI!!!