Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mehrere Icons nebeneinander darstellen (https://www.delphipraxis.net/136948-mehrere-icons-nebeneinander-darstellen.html)

Andreas L. 16. Jul 2009 10:56

Re: Mehrere Icons nebeneinander darstellen
 
Zitat:

Zitat von schwa226
Jedoch weis ich dann nicht wie ich herausfinden kann, welches Icon gedrückt wurde!?

Wieso verwendest du nicht einfach das OnClick-Ereignis des TToolButtons wie ich es oben schon gepostet habe?

schwa226 16. Jul 2009 14:01

Re: Mehrere Icons nebeneinander darstellen
 
Ich benutze ja die TMS Komponente. :zwinker:

Jedem Icon wird die gleiche OnMouseDown zugewiesen. Durch Filtern des Senders habe ich dann den Index für mein Array, indem das HWND, HICON, Callback usw drinnen steht.

In der OnMouseDown unterscheide ich dann ob linke/rechte/mittlere Mouse Button und schicke dann ein Sendmessage zu dem jeweiligen Hwnd mit z.B. WM_LBUTTONDOWN oder WM_RBUTTONDOWN. Das gleiche natürlich auch mit Up usw.

Jedoch spricht mir nicht jedes Icon auf diese Codes an! Das Realtek HD Audio Manager z.B. gar nichts. Kaspersky Icon jedoch funktionert linke und rechte Mouse.

Deswegen möchte ich die Message die beim Mouseclick entsteht 1:1 weiterleiten, denn in der originalen TNA geht es ja!

so was halt wie: WndProc(var Message: TMessage)

Jedoch habe ich beim OnMouseDown nur diese Parameter:
Delphi-Quellcode:
procedure TForm2.OnMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Sender wie gesagt filtere ich heraus, Button filtere ich nach links/rechts/middle.

Wie bekomme ich die TMessage die ich dann per Sendmessage weiterleiten kann?

schwa226 3. Aug 2009 12:04

Re: Mehrere Icons nebeneinander darstellen
 
@turboPASCAL


Habe nun deine Lösung schon eingebaut.

Jedoch hatte ich einige Probleme mit den hIcons.

Ich bekomme meine Icon Handles über TNotifyIconData.

Wenn ich also dem FIconArray dieses Handle zuweise werden nicht alle Icons dargestellt.
Gezeichnet werden sie schon, aber sie tauchen nur kurz auf und sind dann wieder nicht sichtbar.

Wenn ich zuerst mit CopyIcon eine Kopie erzeuge und dieses Handle zuweise sieht es schon besser aus:

Delphi-Quellcode:
IconBar.FIconArray[i].hIcon := CopyIcon(nicData.hIcon);
Wobei nicData den Inhalt von TNotifyIconData enthält!

Beim löschen/entfernen eines Icons lösche ich es wieder mit DestroyIcon.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr.
Seite 4 von 4   « Erste     234   

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