TrayIcon zur Laufzeit "ändern", geht nicht ..

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

TrayIcon zur Laufzeit "ändern", geht nicht ..

Beitrag von corpsman »

Hallo Zusammen,
ich bastle gerade an einem kleinen Programm, bei welchem ich unter Linux Mint Mate zur Laufzeit das Trayicon Image anpassen will. Das Quellbild möchte ich aus einer entsprechenden ImageListe laden.

Also habe ich in das Popup menü meines Trayicons entsprechend angepasst und mir folgenden Code zusammen gegoogelt:

Code: Alles auswählen

Procedure TForm1.MenuItem6Click(Sender: TObject);
Var
  b: TBitmap;
  index, i: integer;
Begin
  MenuItem6.Checked := Not MenuItem6.Checked;
  b := TBitmap.Create;
  b.Width := ImageList1.Width;
  b.Height := ImageList1.Height;
  If MenuItem6.Checked Then Begin
    index := ILDND; // Bild DND
    // Wenn irgend ein Chat eine Ungelesene Nachricht hat, passen wir das Icon entsprechend an ..
    For i := 0 To High(fParticipants) Do Begin
      If fParticipants[i].nm Then Begin
        index := ILDNDCHats;   // Bild DND mit aktiven Chats
        break;
      End;
    End;
  End
  Else Begin
    index := ILChats;  // Default Bild
  End;
  b.canvas.Brush.Color := clWhite;
  b.canvas.Rectangle(-1, -1, 17, 17);
  b.TransparentColor := clWhite;
  b.Transparent := true;
  ImageList1.Draw(b.Canvas, 0, 0, index);
  TrayIcon1.Icon.Assign(b);
  TrayIcon1.InternalUpdate; // -- Das hier macht überhaupt keinen Unterschied
  TrayIcon1.Show;
  b.free;
End;  
Das Komische ist, wenn ich mehrfach auf das Icon Clicke wechselt er schon manchmal das Icon, aber eben nicht immer und definitiv nicht zuverlässig, und wenn dann immer ohne das die Transparents funktioniert :\.

Habt ihr noch Tipps ?
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TrayIcon zur Laufzeit "ändern", geht nicht ..

Beitrag von corpsman »

Was richtig strange ist, wenn ich nen Haltepunkt in den Code mache und dann einfach wieder F9 Drücke, dann scheint es jedes mal zu gehen. Wird wohl irgend ein gesamt "invalidate" sein ... :?:
--
Just try it

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: TrayIcon zur Laufzeit "ändern", geht nicht ..

Beitrag von fliegermichl »

Vielleicht TrayIcon.Invalidate?

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TrayIcon zur Laufzeit "ändern", geht nicht ..

Beitrag von corpsman »

*g* das war mein erster Versuch, aber das gibt es bei TTrayicon nicht und das laut google angegebene TTrayIcon.InternalUpdate macht gar nichts ..

By the way hab das nun mal auch unter Windows getestet, da funktioniert es alles wie es soll, ..

Dann muss ich wohl mal raus bekommen wie man da nen Bugreport einkippt ..
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TrayIcon zur Laufzeit "ändern", geht nicht ..

Beitrag von af0815 »

Ich gehe davon aus, das du beim Trayicon voll im Widgetset bist. Das macht die Sache nicht einfacher, auch für den Bugreport.

Man könnte nur versuchen die LCL mit Debuginfos zu bauen und auch schauen ob es da irgendeine Meldung auf der Konsole gibt. Kann ja sein, das das aktuelle Widgetset irgendwas nicht unterstützt, da ist es unter Linux leider etwas bunter.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: TrayIcon zur Laufzeit "ändern", geht nicht ..

Beitrag von theo »

af0815 hat geschrieben:
Mi 13. Dez 2023, 10:00
Ich gehe davon aus, das du beim Trayicon voll im Widgetset bist.
Ich denke es ist noch schlimmer! :wink:
Du bist beim Desktop Environment. Hier wohl Mate.
Man kann wohl von Glück sagen, wenn das überhaupt x-platform ein bisschen funktioniert.
z.B. "starting with GNOME 3.26, the developers removed the system tray functionality from the desktop environment."

Solche Dinge umschiffe ich meistens großräumig. :lol:

Antworten