Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#1

Denkfehler oder Komponentenproblem?

  Alt 19. Mär 2008, 12:03
Hallo Mitstreiter,

ich stehe gerade auf dem Schlauch bei einem Eventhandler.

Konkret habe ich eine Klasse, die einem TNA Icon kurzzeitig einen Eventhandler für die Balloonhints zuweisen soll.

Das Problem: Der Eventhandler wird nicht ausgelöst weil er nicht an das zugeordnete Objekt übergeben wird.

Code (die üblichen Verdächtigen):

Delphi-Quellcode:
type
  TTestKlasse = class(TComponent)
  private
    ...
    FTrayIcon: TTntTrayIcon;
    ...
  published
    property TrayIcon: TTntTrayIcon read FTrayIcon write FTrayIcon;
  end;
Das TrayIcon wird im MainForm erzeugt, und es sind keine Eventhandler zugewiesen. Der Klasseninstanz wird nun das MainForm-Icon über die Property übergeben. Innerhalb der TTestKlasse wird nun ein Event definiert.

Delphi-Quellcode:
procedure TTestKlasse.ShowIconNotification;
begin
  if Assigned(FTrayIcon) then
  with FTrayIcon do
  begin
    OnBalloonHintClick := DoSomething; // hier ist das Augenmerk drauf
    BalloonFlags := bfInfo;
    BalloonTitle := _('Test Header');
    BalloonHint := _('Testtext');
    ShowBalloonHint;
  end;
end;
Soweit ist also alles klar. Wenn ich das nun laufen lasse, wird der Eventhandler auch FTrayIcon zugewiesen, aber kommt nie beim externen TTntTrayIcon an (übrigens auch nicht bei TTrayIcon).

Ein Breakpoint in der TntExtCtrls, der Quelle für TTntTrayIcon, zeigt dies auch genauso an. FTrayIcon hat den Handler, aber nicht das zugewiesene TrayIcon im MainForm.

Wo ist mein Denkfehler, den ich vor lauter Programmier-Language-Hopping derzeit nicht sehe?

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat