AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Tutorial: Wie verwende ich das CoolTrayIcon?
Tutorial durchsuchen
Ansicht
Themen-Optionen

Tutorial: Wie verwende ich das CoolTrayIcon?

Ein Tutorial von alcaeus · begonnen am 8. Okt 2004 · letzter Beitrag vom 18. Jan 2010
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von alcaeus
alcaeus
Registriert seit: 11. Aug 2003
Es gibt zwar ein Codestück in der Codelibrary, um ein Programm in die TNA zu bringen, ich persönlich finde die CoolTrayIcons viel geschickter.

Zuerst muss man sich das Komponentenpaket herunterladen, z.B. hier. Zur Installation werde ich hier nichts sagen, diese ist eigentlich in der readme-Datei gut genug beschrieben.

Nach der erfolgreichen Installation gibt es ein neues Tab in Delphi: Tray Icons. Dort sind zwei Komponenten zu finden. CoolTrayIcon und TextTrayIcon. Ich persönlich bevorzuge das CoolTrayIcon und werde hier ausschließlich dieses beschreiben.
Als erstes muss man sich ein CoolTrayIcon aufs Form ziehen. Im Objektinspektor können einige Einstellungen getroffen werden, zuerst aber zu den einfachen.
Das TrayIcon soll ja einzigartig sein, also sollte ein eigenes Logo vorhanden sein, und nicht das Standardlogo. Dazu gibt es mehrere Möglichkeiten:
  • Über die Eigenschaft "Icon" kann man ein Icon zuweisen, welches anschließend in der TNA angezeigt wird.
  • Man kann der Eigenschaft "IconList" eine ImageList zuweisen, und anschließend mit "IconIndex" auswählen, welches Item aus der ImageList angezeigt wird. Dieser Wert kann während der Laufzeit natürlich verändert werden.
  • Arbeitet man mit der ImageList, so können zwei weitere Eigenschaften von Bedeutung sein: Setzt man "CycleIcons" so wird das Icon regelmäßig gewechselt (in der Reihenfolge, wie die Images in der ImageList sind). Das Intervall, in welchem gewechselt wird, lässt sich über die Eigenschaft "CycleInterval" festlegen (in Millisekunden).

Sobald das Icon festgelegt ist, kann der Spaß eigentlich losgehen. Will man das TrayIcon anzeigen/ausblenden, so setzt man die "IconVisible"-Eigenschaft auf True bzw. False.

Es gibt noch einige weitere Eigenschaften, die teilweise wichtig sind:
  • Enabled: Wird diese Eigenschaft auf False gesetzt, so erhält das Icon keine Maus- bzw. Keyboardinputs.
  • Hint: Dieser Text wird angezeigt, wenn sich die Maus länger über dem Icon befindet. Die Länge des Texts ist auf 255 Zeichen begrenzt.
  • LeftPopup: Diese Eigenschaft ist normalerweise auf False. Wird sie auf True gesetzt, so öffnet sich das PopupMenu auch wenn mit der linken Maustaste auf das Icon geklickt wird.
  • MinimizeToTray: Wird diese Eigenschaft auf True gesetzt, so wird das Minimier-Verhalten des Forms beeinflusst. Anstatt das Form normal in die Taskleiste zu minimieren, wird das Icon angezeigt und das Form verschwindet komplett, so als ob es mit HideMainForm versteckt worden wäre.
  • PopupMenu: Dem TrayIcon kann ein PopupMenu zugewiesen werden, welches mit einem Rechtsklick (bzw. Linksklick, s.o.) geöffnet werden kann. Ich empfehle die Verwendung eines PopupMenus, da das Icon ansonsten irgendwie seinen Sinn verliert.
  • WantEnterExitEvents: Diese Eigenschaft ist standardmäßig auf False gesetzt, und zwar aus gutem Grund. Ist sie True, so wird intern ein Timer aktiviert, der die MouseEnter bzw. MouseExit-Events an die Anwendung sendet.

So, aber genug der Theorie, jetzt kommt die Praxis.
Um also eine Anwendung zu bauen, die ein TrayIcon verwendet, brauchen wir folgendes: ein CoolTrayIcon, einen Button, und ein PopupMenu. Dem PopupMenu fügen wir zwei Items hinzu:
  • "Form anzeigen": der Code im OnClick dafür ist CoolTrayIcon1.ShowMainForm;
  • "Anwendung beenden": Close;
Dem Button weisen wir "Form ausblenden" als Caption zu, und im OnClick des Buttons schreiben wir CoolTrayIcon1.HideMainForm; Im OnCreate des Forms wird das TrayIcon angezeigt:CoolTrayIcon1.IconVisible := True; Und last but not least weisen wir der PopupMenu-Eigenschaft des TrayIcons noch PopupMenu1 zu.
Anschließend funktioniert euer erstes Programm mit dem TrayIcon (jedenfalls sollte es das).

Doch die Funktionalität des TrayIcons reicht viel weiter.
Zum Beispiel kann der Button in der Taskleiste entfernt werden: dazu fügen wir noch zwei Buttons hinzu:
  • Der erste Button bekommt die Caption "Taskbar-Button entfernen", und der Code im OnClick lautet CoolTrayIcon1.HideTaskbarIcon; .
  • Der zweite Button erhält "Taskbar-Button anzeigen" als Caption, und der OnClick-Code ist CoolTrayIcon1.ShowTaskbarIcon;
Anschließend funktioniert das Anzeigen/Entfernen des Buttons.

Ab Windows2000 gibt es auch die Möglichkeit, BalloonHints anzuzeigen. Auch dies wird vom CoolTrayIcon unterstützt. Dazu platzieren wir noch einen Button aufs Form, und geben ihm die Caption "BalloonHint anzeigen". Der Code im OnClick ist etwas komplizierter, ich poste ihn mal hier rein und erkläre ihn anschließend.
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  Titel, Text, sTimeout: String;
  Timeout: Integer;
begin
  if InputQuery('Titel', 'Titel eingeben:', Titel) and
     InputQuery('Text', 'Text eingeben:', Text) and
     InputQuery('Timeout', 'Timeout eingeben (in Sekunden):', sTimeout) then
  begin
    if TryStrToInt(sTimeOut, TimeOut) then
      CoolTrayIcon1.ShowBalloonHint(Titel, Text, bitInfo, TimeOut)
    else
      MessageDlg('Timeout ungültig', mtError, [mbOk], 0);
  end;
end;
Zuerst werden mit Hilfe des InputQueries die Informationen gesammelt: Titel, Text und ein TimeOut (in Sekunden). Wurde alles gültig eingegeben, so wird der BalloonHint mit Hilfe der Funktion "ShowBalloonHint" angezeigt. Die einzelnen Parameter der Funktion sind leicht erklärt:
  • Der Titel wird fett angezeigt, und darf höchstens 64 Zeichen lang sein.
  • Der Text darf maximal 255 Zeichen lang sein.
  • Der dritte Parameter ist vom Typ TBalloonHintIcon und bestimmt, welches Icon angezeigt wird. Als Werte sind bitNone, bitInfo, bitWarning und bitError definiert. Am Besten ihr probiert die einzelnen Werte aus.
  • Das Timeout kann zwischen 10 und 60 Sekunden betragen. Klickt der Benutzer auf den BalloonHint, so wird dieser geschlossen.
Für die BalloonHints gibt es noch zwei weiter wichtige Dinge: zuerst die Funktion HideBalloonHint, welcher einen evtl. angezeigten BalloonHint wieder ausblendet, und das OnBalloonHintClick-Ereignis. Wie der Name schon sagt, wird dieses Ereignis ausgelöst, wenn der Benutzer auf einen geöffneten BalloonHint klickt. Das Ereignis wird allerdings nicht ausgelöst, wenn der Benutzer den BalloonHint mit einem Klick auf das kleine x schließt.
So, damit wäre ich eigentlich am Ende angelangt. Eventuelle Fragen beantworte ich gerne. Und für alle, die zu faul waren, das Beispielprojekt selbst mitzuerstellen, füge ich es hier hinzu.

Greetz
alcaeus

[edit=fkerber]Neu abgespeichert wg. Code-Highlighting. Mfg, fkerber[/edit]
Angehängte Dateien
Dateityp: zip cooltrayicon-demo.zip (4,3 KB, 291x aufgerufen)
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
 
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#21
  Alt 16. Jan 2010, 10:58
Nimm diese für D2009/D2010 angepasste Version: http://tib.s.songbeamer.eu/downloads/Cooltray.zip
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

 
Delphi 2009 Professional
 
#22
  Alt 17. Jan 2010, 23:41
Habe gerade TTrayicon verwendet, das seit Delphi2006 in der VCL mitgeliefert wird und bin eigentlich zufrieden. Es kann auch Animationen (über eine Imagelist), Balloontips und ein Popupmenü. Siehe Embarcadero-Seite

Blöde Frage, was spricht für CoolTrayIcon? Oder wurde das einfach schon vorher "erfunden"?
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG
 
#23
  Alt 17. Jan 2010, 23:43
Zitat von isilive:
Blöde Frage, was spricht für CoolTrayIcon? Oder wurde das einfach schon vorher "erfunden"?
Man kann es sogar unter Delphi 3 schon verwenden.
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#24
  Alt 18. Jan 2010, 13:29
Das mit der Delphi-3-Kompatibilität schrieb ich schon weiter oben, wenige Beiträge zuvor.

Zitat von isilive:
Habe gerade TTrayicon verwendet, das seit Delphi2006 in der VCL mitgeliefert wird und bin eigentlich zufrieden. Es kann auch Animationen (über eine Imagelist), Balloontips und ein Popupmenü. Siehe Embarcadero-Seite
Wahnsinn! Da gibt es seit Windows 95 und NT 4.0 die Möglichkeit, Trayprogramme auszuführen (bzw. ausführen zu lassen), und die Softwarehäuser Borland und Inprise (auch CodeGear?) hatten es nicht nötig, dafür eine Programmiergrundlage mitzuliefern. Erst ein gutes Jahrzehnt (!) später taucht das endlich als Komponente(n) auf. Alle Achtung!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 14:06 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