Einzelnen Beitrag anzeigen

Reini64

Registriert seit: 3. Mär 2004
Ort: Ulmen
83 Beiträge
 
#7

Re: Anwendung in Taskleiste rechts

  Alt 13. Jan 2005, 22:33
Also ich habe den Code kopiert und die Objecte eingefügt.

Wenn ich nun auf minimieren gehe wird kein Icon angezeigt!

hier nochmal den Code
Delphi-Quellcode:
nit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellAPI, Menus;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Item31: TMenuItem;
    Item21: TMenuItem;
    Item11: TMenuItem;

    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    IconData: TNotifyIconData;
  public
    { Public-Deklarationen }
    procedure WndProc(var Msg: TMessage); override;
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

////////////////////////////////////////////////////////////////////////////////
// auf Mausklicks reagieren, Fensterprozedur erweitern

procedure TForm1.WndProc(var Msg: TMessage);
var
  Point: TPoint;
begin
  if Msg.Msg = WM_USER + 20 then
  begin
    case Msg.lParam of
      WM_RBUTTONDOWN:
        begin
          SetForegroundWindow(Handle);
          GetCursorPos(Point);
          PopUpMenu1.PopUp(Point.X, Point.Y);
        end;
      WM_LBUTTONDOWN:
        begin
          //ShowMessage('links runter');
        end;
      WM_LBUTTONDBLCLK:
        begin
          Form1.Show;
          // Icon nur anzeigen wenn Fenster minimiert
          Shell_NotifyIcon(NIM_DELETE, @IconData);
        end;
    end;
  end;
  inherited;
end;

////////////////////////////////////////////////////////////////////////////////
// beim Minimieren Fomr verstecken und Icon in die TNA

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
  if Message.CmdType and $FFF0 = SC_MINIMIZE then
  begin
    Hide;
    // Icon nur anzeigen wenn Fenster minimiert
    Shell_NotifyIcon(NIM_ADD, @IconData);
  end
  else
    inherited;
end;

////////////////////////////////////////////////////////////////////////////////
// Beim beenden Icon entfernen

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE, @IconData);
end;

////////////////////////////////////////////////////////////////////////////////
// Beim Erstellen des Formulares TNotifyIconData-Struktur initialisieren

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.ShowMainForm := False; //Programm gar nicht erst anzeigen
  IconData.cbSize := SizeOf(IconData);
  IconData.Wnd := Handle;
  IconData.uID := 100;
  IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
  IconData.uCallBackMessage := WM_USER + 20;
  IconData.hIcon := Application.Icon.Handle;
  IconData.szTip := 'Dies ist ein TNA-Icon';
  Shell_NotifyIcon(NIM_ADD, @IconData); // fügt das Icon ein end;
end;

end.
  Mit Zitat antworten Zitat