AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCategoryButtons extern Klick simulieren

Ein Thema von hes · begonnen am 19. Dez 2024 · letzter Beitrag vom 21. Dez 2024
Antwort Antwort
hes

Registriert seit: 21. Apr 2024
Ort: Baden Württemberg
4 Beiträge
 
Delphi 12 Athens
 
#1

TCategoryButtons extern Klick simulieren

  Alt 19. Dez 2024, 02:47
Hallo Zusammen,

Wie kann man bei den TCategoryButtons einen externen Click simulieren, also wie wenn man den Button mit der Maus drückt um es aus einer Funktion anzuwählen/umzuschalten.

Unter ...\Samples\Object Pascal\VCL findet man das "SplitView" Beispiel. Wenn man den Style auf einen anderen als Windows wechselt sieht man schön wie der gedrückte Button hinterlegt wird.

Leider habe ich es bis jetzt nicht geschafft das Problem alleine zu lösen. Weis jemand Rat?
Rainer
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#2

AW: TCategoryButtons extern Klick simulieren

  Alt 20. Dez 2024, 13:37
Naja, die Items in der Liste (TButtonItem) haben eine Eigenschaft Bounds, die Position und Grösse des "Buttons" angibt, vermutlich in Client-Koordinaten der TCategoryButton-Komponente. Mit dessen ClientToScreen-Methode könnte man das in Screen-Koordinaten umrechnen, den Mauszeiger dort positionieren (Mouse.CursorPos, hat einen Setter) und einen Mouse down simulieren (API-Funktion SendInput oder direkt entsprechende Messages (WM_LBUTTONDOWN) an die Komponente senden.
Peter Below
  Mit Zitat antworten Zitat
hes

Registriert seit: 21. Apr 2024
Ort: Baden Württemberg
4 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCategoryButtons extern Klick simulieren

  Alt 20. Dez 2024, 21:35
@peterbelow

das hab ich sogar schon vor der Fragestellung hier gemacht, aber mit dem auf und zuklappen ist das so ne Sache. Funktioniert auch bedingt.

Zum Test kann man sich einen Button einbauen, wo man sieht wurde schon was gedrückt. BtnItem.OnClick auslösen geht, aber optisch passiert leider nichts. Aus dem Quellcode der Komponente bin ich noch nicht schlau geworden wo ich ansetzen muss.

procedure TSplitViewForm.Button1Click(Sender: TObject);
var
BtnItem: TButtonItem;
begin
BtnItem := catmenuitems.categories[0].items[1];

if Assigned (catMenuItems.CurrentCategory) then
ShowMessage (catMenuItems.CurrentCategory.CategoryButtons.Sele ctedItem.Caption);
end;
Rainer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: TCategoryButtons extern Klick simulieren

  Alt Gestern, 00:21
Ich würde mal sagen du nimmst dir einen Style (deinen aktuellen) und passt dort das Jeweilige an.
Da es in andern Styles geht, muß es schließlich unterschiedliche Grafiken für geben.

Also irgendwie weiß man hier anfangs und letztendlich garnicht, worum es hier gehn soll.
* das Drücken soll man physisch sehen
* programmseitig drücken (Aktion ausführen)
* programmseitig drücken und es dabei auch so aussehen zu lassen, als wenn "gedrückt" wird
* ?
$2B or not $2B

Geändert von himitsu (Gestern um 00:23 Uhr)
  Mit Zitat antworten Zitat
hes

Registriert seit: 21. Apr 2024
Ort: Baden Württemberg
4 Beiträge
 
Delphi 12 Athens
 
#5

AW: TCategoryButtons extern Klick simulieren

  Alt Gestern, 00:59
@himitsu

Vielleicht das Beispiel von Embacadero ansehen, dort sieht man wenn man einen Button drückt wie er unterlegt wird und aktiviert bleibt. Der Button soll einfach angewählt angezeigt werden. Also ähnlich wie bei einem normalen Button ein Button.Click.
Rainer

Geändert von hes (Gestern um 13:03 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 10:18 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