AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree Markierung aufheben

Ein Thema von Alois · begonnen am 27. Okt 2009 · letzter Beitrag vom 30. Okt 2009
Antwort Antwort
Alois

Registriert seit: 23. Jul 2005
71 Beiträge
 
Delphi 10 Seattle Professional
 
#1

VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 08:05
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:
vst.ClearSelection;
vst.FocusedNode:= nil;
Gruss Alois
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 08:26
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 09:54
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:
ActiveControl := nil; Statt nil kann man auch ein anderes Control angeben (z.B. Edit1 odere was auch immer au deiner Form drauf ist).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Alois

Registriert seit: 23. Jul 2005
71 Beiträge
 
Delphi 10 Seattle Professional
 
#4

Re: VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 11:51
Muss ich das jetzt in jedes OnClick-Ereignis reinschreiben oder gibt es eine
andere (Programmweite/Systemweite) Möglichkeit die Markierung zu verlieren?

Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
  ActiveControl := nil;
  vst.TreeOptions.PaintOptions := [toHideSelection];
end;
Gruss Alois
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 11:55
Zitat von Alois:
Muss ich das jetzt in jedes OnClick-Ereignis reinschreiben oder gibt es einen
andere (Programmweite/Systemweite) Möglichkeit die Markierung zu verlieren?
Es kommt darauf an, wo du hinklicken willst, bzw. wo es alles verschwinden soll, wenn da hingeklickt wurde.

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).


vst.TreeOptions.PaintOptions := [toHideSelection]; dieses nicht im Code, sondern einfach nur im OI umstellen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Alois

Registriert seit: 23. Jul 2005
71 Beiträge
 
Delphi 10 Seattle Professional
 
#6

Re: VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 12:15
[quote="himitsu"]
Zitat von Alois:
Wenn du eine andere Komponente anklickst, dann verschwindet der Fokus automatisch, da diese andere Komponente meisten diesen bekommt.
Hallo himitsu,

das stimmt so nicht... zumindest ist es bei mir nicht so. Ich benutze VST in einer Tabellenansicht und habe folgende Eigenschaften gesetzt:
Delphi-Quellcode:
vst.TreeOptions.SelectionOptions := [toFullRowSelect, toMultiSelect];
vst.TreeOptions.MiscOptions := [toAccecptOLEDrop, toFullRowDrag];
Bei mir bleibt die Markierung immer gesetzt, egal wo ich hinklicke.

Gruess Alois
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 12:20
ja und was glaubst du nun, wofür die Option toHideSelection nun gut sein könnte?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Alois

Registriert seit: 23. Jul 2005
71 Beiträge
 
Delphi 10 Seattle Professional
 
#8

Re: VirtualStringTree Markierung aufheben

  Alt 27. Okt 2009, 12:46
Zitat von himitsu:
ja und was glaubst du nun, wofür die Option toHideSelection nun gut sein könnte?
Damit passiert auch nicht's. Ich werde noch verrückt.

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
Angehängte Dateien
Dateityp: zip projekt1_185.zip (1,41 MB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Alois

Registriert seit: 23. Jul 2005
71 Beiträge
 
Delphi 10 Seattle Professional
 
#9

Re: VirtualStringTree Markierung aufheben

  Alt 30. Okt 2009, 06:46
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:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: integer);
begin
  vst.ClearSelection;
  vst.FocusedNode := nil;
end;
Damit verliere ich die Markierung wenn ich die Maus über den vst-Rahmen hinausbewege.

Gruss Alois
  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 04:22 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