// Wenn das Programm minimiert oder deaktiviert wird, verschwindet
// es aus der Taskbar und vom Bildschirm und das Icon der Anwendung
// erscheint in der Traybar. Klickt man mit der linken Maustaste
// auf dieses Icon, erscheint das Programm wieder auf dem
// Bildschirm und in der Taskleiste und das Icon verschwindet aus
// der Traybar. Quervwerweis:
ein Icon in der Traybar animieren

// Getestet mit D4 unter Win98

unit tray;

interface

uses
shellapi,Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

const
WM_TRAYEVENT = WM_USER+100;

type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject); 
// im Objektinspektor eintragen
procedure FormDestroy(Sender: TObject);
// im Objektinspektor eintragen
private
procedure
OnMinimize(Sender: Tobject);
procedure OnDeactivate(Sender: Tobject);
procedure TrayEvent(var Msg: TMessage); Message WM_TRAYEVENT;
public
{ Public-Deklarationen}
end;

var
Form1: TForm1;
NotifyIconData: TNotifyIconData;

implementation

{$R *.DFM}

procedure rein;
begin
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;

procedure raus;
begin
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;

procedure TForm1.OnMinimize(sender:tobject);
begin
showwindow(application.handle,sw_hide);
rein;
end;

procedure TForm1.TrayEvent(var Msg: TMessage);
begin
if msg.lparam = WM_LButtonDown then begin
showwindow(application.handle,sw_showminimized);
raus;
showwindow(application.handle,sw_shownormal);
form1.Show;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize:=OnMinimize;
Application.OnDeactivate:=OnDeactivate;
NotifyIconData.cbSize := Sizeof(NotifyIconData);
NotifyIconData.Wnd := Handle;
NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
NotifyIconData.uCallbackMessage := WM_TRAYEVENT;
NotifyIconData.hIcon := Application.Icon.Handle;
NotifyIconData.szTip := 'Klicken Sie mit der linken Maustaste'+#0;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
raus;
end;

procedure TForm1.onDeactivate(Sender: TObject);
begin
form1.Visible:=false;
onminimize(sender);
end;

end.


Zugriffe seit 6.9.2001 auf Delphi-Ecke