![]() |
VirtualStringTree Markierung aufheben
Hallo,
ich würde gerne die markierte(n) Zeile(n) aufheben, sobald ich mit der Maus neben den VST-Rahmen geklickt habe z.B. auf den Rahmen des Fensters oder auf eine Schaltfläche.
Delphi-Quellcode:
Gruss Alois ;)
vst.ClearSelection;
vst.FocusedNode:= nil; |
Re: VirtualStringTree Markierung aufheben
Hallo Alois,
am einfachsten wäre es wohl, in der Eigenschaft TreeOptions.PaintOptions das Flag toHideSelection zu setzen. Auf diese Weise verlierst du nicht einmal die Auswahl, falls du später den Fokus an den VST zurückgeben möchtest. Gruß Hawkeye |
Re: VirtualStringTree Markierung aufheben
Dafür muß er aber den Fokus an ein anderes Control übergeben (bzw. er muß diesen dem VST wegnehmen)
und einfach nur irgendwo danebern hinzuklicken ändert daran nichts. Also den Vorschlag von dir (Hawkeye219) zusammen mit Folgendem in OnClick der Form:
Delphi-Quellcode:
Statt nil kann man auch ein anderes Control angeben (z.B. Edit1 odere was auch immer au deiner Form drauf ist).
ActiveControl := nil;
|
Re: VirtualStringTree Markierung aufheben
Muss ich das jetzt in jedes OnClick-Ereignis reinschreiben oder gibt es eine
andere (Programmweite/Systemweite) Möglichkeit die Markierung zu verlieren?
Delphi-Quellcode:
Gruss Alois ;)
procedure TForm1.FormClick(Sender: TObject);
begin ActiveControl := nil; vst.TreeOptions.PaintOptions := [toHideSelection]; end; |
Re: VirtualStringTree Markierung aufheben
Zitat:
Wenn du eine andere Komponente anklickst, dann verschwindet der Fokus automatisch, da diese andere Komponente meisten diesen bekommt. Wenn du einfach nur zwischen irgendwelche Komponenten direkt auf die Form klicken willst und es da auch verschwinden soll, dann mußt du der Form dieses sagen, also im OnClick. Selbes gilt bei Komponenten, welche selber keinen Eingabefokus bekommen (können).
Delphi-Quellcode:
dieses nicht im Code, sondern einfach nur im OI umstellen :zwinker:
vst.TreeOptions.PaintOptions := [toHideSelection];
|
Re: VirtualStringTree Markierung aufheben
[quote="himitsu"]
Zitat:
das stimmt so nicht... zumindest ist es bei mir nicht so. Ich benutze VST in einer Tabellenansicht und habe folgende Eigenschaften gesetzt:
Delphi-Quellcode:
Bei mir bleibt die Markierung immer gesetzt, egal wo ich hinklicke.
vst.TreeOptions.SelectionOptions := [toFullRowSelect, toMultiSelect];
vst.TreeOptions.MiscOptions := [toAccecptOLEDrop, toFullRowDrag]; Gruess Alois ;) |
Re: VirtualStringTree Markierung aufheben
ja und was glaubst du nun, wofür die Option toHideSelection nun gut sein könnte?
|
Re: VirtualStringTree Markierung aufheben
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Mit dem Code (vst.ClearSelection; vst.FocusedNode:= nil;) kann ich die Markierung löschen, mir fehlt nur das passende Ereignis um egal-wo-ich-draufklicke die Markierung zu verlieren. Ausnahme soll nur der Klick innerhalb der VST-Komponente sein. Im Anhang ist eine Demo. Bilder sagen mehr als Worte. Und eine Demo um so mehr. Gruss Alois ;) |
Re: VirtualStringTree Markierung aufheben
Ich habe nochmal ein Minimalprojekt erstellt (ohne Skins) und habe bemerkt das es wohl an den Speedbuttons liegt.
Bei einem Klick auf einen normalen Button verliere ich die Markierung. Ich habe es jetzt so gelöst:
Delphi-Quellcode:
Damit verliere ich die Markierung wenn ich die Maus über den vst-Rahmen hinausbewege.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: integer); begin vst.ClearSelection; vst.FocusedNode := nil; end; Gruss Alois ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz