Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi BalloonTimeout bei TTrayIcon geht nicht (https://www.delphipraxis.net/134697-balloontimeout-bei-ttrayicon-geht-nicht.html)

Viktorii 27. Mai 2009 07:33


BalloonTimeout bei TTrayIcon geht nicht
 
Moin zusammen.

Ich benutzte bei meine TrayIcon die Sprechblase um Informationen anzeigen zu lassen. Nun möchte ich das die Sprechblase nach einer gewissen Zeit von selbst verschwindet.

Dazu habe ich die Eigenschaft BalloonTimeout auf 1000 gesetzt.

Aber die Sprechblase verschwindet einfach nicht.

Wo liegt das Problem?

Vielen Dank.

toms 3. Jun 2009 19:10

Re: BalloonTimeout bei TTrayIcon geht nicht
 
Hallo

Andere haben anscheinend auch dieses Problem.
Mögliche Lösung: Mal im Quelltext schauen, wie BalloonTimeout zu verwenden ist oder ob es sich tatsächlich um einen Bug handelt. Ansonsten auf eine andere TrayIcon Komponente (z.B CoolTrayIcon) ausweichen.

Viktorii 10. Feb 2011 11:13

AW: BalloonTimeout bei TTrayIcon geht nicht
 
So, nun habe ich wieder ein Projekt mit einem BalloonHint und der 'Bug' ist in DelphiXE immer noch vorhanden.

Ich habe das Problem damals per Timer gelöst, der nach ns BalloonHint auf '' setzt... dann verschwindet er auch...

Nun möchte ich in meinem neuen Projekt diese zusätzlichen Timer aber nicht haben, da diese (und das ganze Starten und Stoppen usw.) dan Quellcode unübersichtlich macht.

Deswegen habe ich mir gedacht ich mache mir einfache eine von TTrayIcon abgeleitete Komponete, welche einen Timer enthält.

Das habe ich soweit auch schon gemacht:

Delphi-Quellcode:
unit MyTrayIcon;

interface

uses
  ExtCtrls, Classes;

type
  TMyTrayIcon = class(TTrayIcon)
  private
    FBallonShowInterval: cardinal;
    FTimer: TTimer;
  protected

  public

  published
    constructor Create(Owner: TComponent); override;
    destructor Destroy; override;
    property BallonShowInterval: cardinal write FBallonShowInterval;
  end;

procedure Register;

implementation

uses
  SysUtils;

procedure Register;
begin
  RegisterComponents('MyComponents', [TMyTrayIcon]);
end;

{ TMyTrayIcon }

constructor TMyTrayIcon.Create(Owner: TComponent);
begin
  inherited;
  FTimer := TTimer.Create(self);
end;

destructor TMyTrayIcon.Destroy;
begin
  if assigned(FTimer) then
    FreeAndNil(FTimer);
  inherited;
end;

end.
Nur fehlt mir das Ergeifnis wenn der BalloonHint angezeigt wird. In diesem muss ich den Timer dann ja starten.

TTrayIcon hat aber nur diese Ereignisse:

Zitat:

Ereignisse von ExtCtrls.TTrayIconAus RAD Studio VCL Reference
Übergeordnetes: TTrayIcon

OnAnimate
OnBalloonClick Wird ausgelöst, wenn der Sprechblasenhinweis angeklickt wird.
OnClick
OnDblClick
OnMouseDown
OnMouseMove
OnMouseUp
Wie kann ich diese Problem lösen?

Noch eine OT Zusatzfrage: Muss ich im destructor eigentlich
Delphi-Quellcode:
FreeAndNil(FTimer);
machen?

Im Konstruktor habe ich ja einen Owner angegeben. Wenn dieser freigegeben wird, werden doch auch automatisch alle Objekte welche dieses Objekt als Owner haben freigegeben, oder?

Viktorii 15. Feb 2011 09:36

AW: BalloonTimeout bei TTrayIcon geht nicht
 
*push*

Viktorii 18. Feb 2011 12:31

AW: BalloonTimeout bei TTrayIcon geht nicht
 
Keiner eine Idee :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 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