Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   TCoolTrayIcon Overlay-Icon (https://www.delphipraxis.net/207135-tcooltrayicon-overlay-icon.html)

DieDolly 26. Feb 2021 16:08

TCoolTrayIcon Overlay-Icon
 
Ich benutze seit Jahren das TCoolTrayIcon und es funktioniert ohne Probleme. Außerdem sind ein paar nützliche Funktionen dabei wie HideMainForm und HideTaskbarIcon.

Aber kann die Komponente auch ein Overlay-Icon über dem eigentlichen Icon anzeigen so wie man es in der Taskleiste machen kann?
Falls nicht, wie bekommt man das sonst hin?

TiGü 26. Feb 2021 16:28

AW: TCoolTrayIcon Overlay-Icon
 
Beinhaltet der Quelltext dieser Komponente dann so etwas wie das Wort 'Overlay' irgendwo?

Wenn nein, dann kann es das wohl nicht.
Aber du müsstest mit deiner jetzigen CE Version TTaskBar haben.
Damit kannst du das machen.

Blog-Beitrag:
https://chapmanworld.com/task-bar-icons-in-delphi/

Doku:
http://docwiki.embarcadero.com/Libra...ar.OverlayIcon

DieDolly 26. Feb 2021 16:31

AW: TCoolTrayIcon Overlay-Icon
 
TTaskBar scheint nur für die Taskbar zu sein. Ich suche eine Möglichkeit, das Overlay-Icon über dem Tray-Icon anzuzeigen.
TTaskBar gucke ich mir, falls ich ein Overlay-Icon in der Taskbar brauche, aber auch an.

venice2 26. Feb 2021 16:42

AW: TCoolTrayIcon Overlay-Icon
 
Zitat:

Zitat von DieDolly (Beitrag 1483982)
TTaskBar gucke ich mir, falls ich ein Overlay-Icon in der Taskbar brauche, aber auch an.

Denke nicht das es das ist was du möchtest.

Ok denke wohl eher das.. 2.png
Progreß--Bar im Pause Status mit Overlay Icon (Pause)

DieDolly 26. Feb 2021 17:39

AW: TCoolTrayIcon Overlay-Icon
 
Nee das ist es beides nicht.

Das, was ihr da für die TaskBar zeigt, brauche ich für das Icon im System tray.

KodeZwerg 26. Feb 2021 17:53

AW: TCoolTrayIcon Overlay-Icon
 
Wenn es Dir nur darum geht ein icon auf ein anderes zu malen, für sowas hatte ich mir mal was geschrieben.
(Icon wird zu Bitmap, Bitmap mit Grafik verschmelzen und dann zurück in ein Icon.)

Wenn es Dir um die gleiche Funktionalität wie es in der TaskBar angeboten wird, Overlay Buttons, Preview, JumpList usw, da musst Du wohl selbst Hand anlegen. Mir ist bis jetzt noch nichts in dieser Richtung bekannt.

DieDolly 26. Feb 2021 17:56

AW: TCoolTrayIcon Overlay-Icon
 
Zitat:

(Icon wird zu Bitmap, Bitmap mit Grafik verschmelzen und dann zurück in ein Icon.)
Damit könnte ich etwas basteln. Kannst du den Code teilen?

KodeZwerg 26. Feb 2021 18:43

AW: TCoolTrayIcon Overlay-Icon
 
Klar teile ich den Code, bissl Geduld bitte, muss da echt viel suchen :-)

Was mir noch eingefallen ist, Mouse Events.
Beim MouseEnter ein mini Borderless Formular übers Icon darstellen lassen mit Inhalt "was auch immer Du brauchst um happy zu sein".

Lass es Dir mal durch den Kopf gehen da ich noch nicht weiß was zu zu bezwecken versuchst.

So ich buddel mal in meinen Archiven weiter.

Bis bald

DieDolly 26. Feb 2021 19:15

AW: TCoolTrayIcon Overlay-Icon
 
Zitat:

Lass es Dir mal durch den Kopf gehen da ich noch nicht weiß was zu zu bezwecken versuchst.
Einfach nur ein kleines Bildchen in irgendeiner der vier Ecken über das eigentliche Icon :P
So wie es die TTaskBar macht.

KodeZwerg 26. Feb 2021 19:45

AW: TCoolTrayIcon Overlay-Icon
 
Ich finde nicht das gewollte aber bei der Schatzsuche bin auf diesen Code gestolpert.

Viel Spaß beim testen.


Delphi-Quellcode:
// uses* Windows, Forms, Controls, Classes, Graphics, StdCtrls, ExtCtrls, CommCtrl;

function MergeIcons(var Icon: HICON; Overlay: HICON): Boolean;
var
  Source, Dest: HIMAGELIST;
  Width, Height: Integer;
begin
  Result := False;
  Width := GetSystemMetrics(SM_CXSMICON);
  Height := GetSystemMetrics(SM_CYSMICON);
  Source := ImageList_Create(Width, Height, ILC_MASK or ILC_COLOR32, 1, 0);
  if Source <> 0 then
    begin
      if (ImageList_AddIcon(Source, Icon) <> -1) and (ImageList_AddIcon(Source, Overlay) <> -1) then
      begin
        Dest := HIMAGELIST(ImageList_Merge(Source, 0, Source, 1, 0, 0));
        if Dest <> 0 then
          begin
            DestroyIcon(Icon);
            Icon := ImageList_ExtractIcon(0, Dest, 0);
            ImageList_Destroy(Dest);
            Result := True;
          end;
      end;
      ImageList_Destroy(Source);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Ico: HICON;
begin
  Ico := TrayIcon1.Icon.Handle; // hole original icon
  MergeIcons(Ico, Image1.Picture.Icon.Handle); // verschmelze es mit einem anderen icon
  TrayIcon1.Icon.Handle := Ico; // nutze das neue icon
end;
Ps: Icon Größe sollte identisch sein.

Pps: Das zweite Icon so gestalten das welche Ecke auch immer Deinen Wunsch entspricht.
Ich nutzte das um einen Roten oder Grünen Punkt raufzukleben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
Seite 1 von 2  1 2      

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