// 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.
|