Avatar billede w13 Novice
05. november 2006 - 13:13 Der er 10 kommentarer og
1 løsning

Trayicon-kommando

Hej Eksperter.

Jeg har fundet følgende kode, som genererer et såkaldt "trayicon":
-------------------------------------------------------------
unit trayicon;

interface

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

const
WM_ICONTRAY = WM_USER + 1;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  TrayIconData: TNotifyIconData;

implementation

{$R *.DFM}

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

if Shell_NotifyIcon(NIM_ADD, @TrayIconData) then

else
  showmessage('failed');
end;

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

end.
-------------------------------------------------------------
Nu er problemet bare, at jeg gerne ville have det til at udføre kommandoer, når man klikkede på det. Helst spørge, om man vil lukke programmet eller sådan noget. Men hvordan gør jeg det? Der var noget hjælp til klik-kommandoer, der hvor jeg fandt koden: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1632&lngWId=7
Men det virkede ikke.

Håber I kan hjælpe.
W13
Avatar billede snowball Novice
05. november 2006 - 13:22 #1
Du kan evt. prøve at kigge på CoolTrayIcon - http://subsimple.com/delphi.asp - Den er ret nem at bruge og har en del funktioner, hvor det så vidt jeg husker, er ret nemt at hæfte en "menu" på.
Avatar billede w13 Novice
05. november 2006 - 13:29 #2
Umiddelbart lidt uoveskueligt for en Delphi-n00b som mig. =)
Jeg har dog fundet noget i den tutorial, jeg linkede til, som du måske kan hjælpe med;

Der står, at jeg skal tilføje følgende til formen:
----------------------------------------------------
procedure TrayMsg(var Msg: TMessage); message WM_ICONTRAY;
----------------------------------------------------
Og følgende burde være i funktionen:
----------------------------------------------------
case Msg.lParam of
    WM_LBUTTONDOWN:
    begin
          ShowMessage('Left button clicked!');
    end;
    WM_RBUTTONDOWN:
    begin
          ShowMessage('Right button clicked!');
    end;
end;
----------------------------------------------------
Men når jeg prøver at sætte det ind i koden, virker det ikke. Vil du ikke lige prøve at indsætte det i min kode her? Er rimelig lost.
Avatar billede psycosoft-funware Nybegynder
05. november 2006 - 19:32 #3
>>w13: jeg ville foreslå dig at tage et kig på de medfølgende demoer af CoolTrayIcon da
der bliver gennemgået næste alt hvad TrayIcon kan incl. baloon tips :)
Avatar billede hrc Mester
07. november 2006 - 14:14 #4
Bruger D2006 så er komponenten med der (TTrayIcon/ExtCtrls).

Det er i øvrigt bare noget med at tilknytte en TPopUpMenu til komponenten hvorefter det skulle virke.
Avatar billede w13 Novice
07. november 2006 - 17:53 #5
Jo, men der er bare vildt mange filer.. =S Og jeg havde håbet, at mine 10 linjer ovenover ville kunne gøre tricket.. =( Er I helt sikre på, at det ikke lige kan lade sig gøre?
Avatar billede w13 Novice
07. november 2006 - 17:54 #6
Ville være så meget nemmere.. bare at få det til at virke, så kan jeg kigge i de andre filer, når jeg kan få den til at udføre kommandoer :S
Avatar billede hrc Mester
08. november 2006 - 09:10 #7
Som sagt: Kører du D2006 er det et spørgsmål om at smække en TTrayIcon, en TPopupMenu og evt. en TActionList på din form. Dernæst forbinde menuen med ikonen og aktionerne (fra din aktionlist) til popup-menuen. Det er lige ud ad landevejen og det tager 5 minutter at lave.
Avatar billede w13 Novice
08. november 2006 - 14:14 #8
Det er Delphi 4, jeg kører. =o
Avatar billede w13 Novice
25. november 2006 - 18:39 #9
Nå, det ku' jeg godt finde ud af. =) Mange tak for hjælpen, hrc. Hvis du lige opretter et svar, så kan du få point.
Avatar billede hrc Mester
27. november 2006 - 11:49 #10
Her er et svar, men jeg løste jo ikke dit problem, gjorde jeg? Du kører D4 og jeg snakkede D2006
Avatar billede w13 Novice
27. november 2006 - 15:29 #11
Det viste sig, at dit forslag også fungerede i D4 :)
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