Avatar billede spykiller Nybegynder
11. december 2003 - 19:05 Der er 5 kommentarer og
1 løsning

tray unden component

Hvad gør jeg forkert her

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure TrayMessage (var Msg: TMessage);
  private
    TrayIconData: TNotifyIconData;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  Application.ShowMainForm := False;


  with TrayIconData do
  begin
    cbSize := SizeOf(TrayIconData);
    Wnd := Handle;
    uID := 0;
    uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
  //  uCallbackMessage := WM_ICONTRAY;
    hIcon := form1.Icon.Handle;
    StrPCopy(szTip, Application.Title);
  end;

  Shell_NotifyIcon(NIM_ADD, @TrayIconData);

end;

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

procedure TForm1.TrayMessage(var Msg: TMessage);
begin
  case Msg.lParam of
    WM_LBUTTONDOWN:
    begin
      ShowMessage('hej');
      Form1.Visible := true;
    end;
    WM_RBUTTONDOWN:
    begin
      Form1.Visible := false;
    end;
  end;
end;



end.
Avatar billede stoney Nybegynder
11. december 2003 - 19:34 #1
http://delphi.about.com/library/weekly/aa121801a.htm

Den virker, bruger den selv.

Stoney
Avatar billede spykiller Nybegynder
11. december 2003 - 20:44 #2
Det er også den jeg bruger,,, kan bare ikke få det til at virke
Avatar billede Slettet bruger
11. december 2003 - 21:06 #3
Prøv at se på borrisholt' eksemple, det virker ihvertfald :):

http://www.borrisholt.com/ShellAPI/DelphiSource/TrayIcon.zip
Avatar billede Slettet bruger
11. december 2003 - 21:15 #4
Men tror fejlen i din kode er du skriver form1.Icon.Handle; istedet for Application.Icon.Handle;


Du kan se koden til artiklen på delphi.about her:

http://delphi.about.com/library/code/ncaa122501a.htm
Avatar billede Slettet bruger
11. december 2003 - 21:24 #5
Og hvis der skal ske noget når du trykker eller højreklikker på knappen skal du sætte:

const
  WM_ICONTRAY = WM_USER + 1;

ind. Og linien procedure TrayMessage (var Msg: TMessage); skal erstattes med procedure TrayMessage (var Msg: TMessage); message WM_ICONTRAY;

Og // skal fjernes før uCallbackMessage := WM_ICONTRAY; i OnCreate.
Avatar billede spykiller Nybegynder
11. december 2003 - 21:28 #6
Nu virker det hejhej...

Tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester