AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Eigene Komponente (TNA-Icon) und TNotifyEvent
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponente (TNA-Icon) und TNotifyEvent

Ein Thema von ManuMF · begonnen am 12. Feb 2006 · letzter Beitrag vom 13. Feb 2006
Antwort Antwort
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#1

Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 12. Feb 2006, 14:06
Hallo,

ich möchte mir eine eigene Komponente für ein TNA-Icon erstellen. Das Icon soll auch ein onClick-Event besitzen. Wie kann ich das realisieren? Bisher habe ich folgendes (nur relevante Code-Stellen):

Delphi-Quellcode:
type
  TTrayIcon = class(TComponent)
  private
    ...
    procedure WMTaskbarEvent(var Message: TMessage); message WM_TASKBAREVENT;
      // Habe ich aus Code-Beispielen, funktioniert auch, zumindest bei Forms
  protected
    ...
    FOnClick: TMNotifyEvent;
  public
    ...
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
  end;

...

procedure TTrayIcon.WMTaskbarEvent(var Message: TMessage);
begin
  case Message.LParamLo of
    WM_LBUTTONDBLCLK:
      ...
    WM_RBUTTONDOWN:
      ...
  end;
  // So habe ich es bisher gemacht. In RBUTTONDOWN habe ich dann z.B.
  // ein PopupMenu geöffnet.
  // Aber wie kann ich es hier an das Event weitergeben?
end;
Danke,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 12. Feb 2006, 14:28
Delphi-Quellcode:
published
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
    property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
    property OnRightClick: TMouseEvent read FOnRightClick write FonRightClick; // !


// ...

procedure TTrayIcon.DoDblClick(Sender: TObject);
begin
  if Assigned(FOnDblClick) then FOnDblClick(Sender);
end;

procedure TTrayIcon.DoClick(Sender: TObject);
begin
  if Assigned(FOnClick) then FOnClick(Sender);
end;

procedure TTrayIcon.DoRightClick(Sender: TObject);
begin
  if Assigned(FOnRightClick) then...
end;
Das ist schon alles.

[edit=turboPASCAL]Edit: Anhang hinzugefügt. Eine fertige einfache Trayicon-Classe... (nix JVCL's) [/edit]
Angehängte Dateien
Dateityp: zip trayicon_860.zip (4,1 KB, 9x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#3

Re: Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 12. Feb 2006, 14:30
Cool, danke

Probier ich gleich aus.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#4

Re: Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 12. Feb 2006, 20:36
So, es funktioniert soweit (nach einigen Fehlversuchen ).

ABER: Es gibt ein Problem. Assigned ist immer true . Der Code:
Delphi-Quellcode:
procedure TTrayIcon.DoClick(Sender: TObject);
begin
  if Assigned(FOnClick) then FOnClick(Sender); // führt zu Zugriffsverletzung
  if Assigned(FOnClick) then showmessage('Ist assigned'); // -> Jeder Klick zeigt Meldung an, auch wenn in OnClick nichts drin steht
end;
Wie kann ich das beheben?

Danke,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 12. Feb 2006, 21:50
Wie initialisierst du den FOnClick?
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#6

Re: Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 13. Feb 2006, 08:48
In der Komponentenunit gar nicht. Dabei habe ich mich an den Beispielen orientiert.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 13. Feb 2006, 19:24
Ja, ich dachte das würde dich schon weiter bringen.

Dann initalisiere doch die Variable mal mit nil oder leg eine Dummy-Prozedur an, die du dann auf die Variable zu weist.

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#8

Re: Eigene Komponente (TNA-Icon) und TNotifyEvent

  Alt 13. Feb 2006, 20:00
Wenn in der Prozedur was drin steht, wird der Code beim Click ohne Probleme ausgeführt.

Ich habe jetzt auch mal im onCreate des Icons (in der Icon-Unit) FOnClick := nil hinzugefügt, das hat aber auch nichts gebracht.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz