![]() |
TVirtualStringTree, erste Zeile (nicht Node !) markieren
Hallo #,
ich benutze den TVirtualStringTree als ListView-Ersatz, es gibt also nur RootNodes. Wie kann ich jetzt die 1. Zeile per Code markieren. LV_WorkSteps ist der TVirtualStringTree. Mit
Delphi-Quellcode:
wird nur die 1. Spalte markiert, aber auch nicht richtig.
LV_WorkSteps.FocusedNode:= LV_WorkSteps.GetFirst;
Ich hole mir jetzt das Data des 1. Nodes, dahintersteckt mein eigene Klasse, und suche die mich praktisch noch mal selbst
Delphi-Quellcode:
Das klappt auch,
DataItem:= TDateItem(LV_WorkSteps.GetNodeData(LV_WorkSteps.WorkSteps.GetFirst)^);
SelectTreeItem(LV_WorkSteps, DataItem.Id); // IterateSubTree NIL aber das muss doch einfacher gehen ... oder nicht ? Danke Heiko |
Re: TVirtualStringTree, erste Zeile (nicht Node !) markieren
Wie die erste Zeile, also auch alle Columns der ersten Zeile und nicht nur den Node der ersten Column der ersten Zeile?
Evtl. reicht es Dir ja die Option "toFullRowSelect" in den SelectionOptions der TreeOptions zu aktivieren, damit wird immer die gesamte Zeile ausgewählt... Viele Grüße |
Re: TVirtualStringTree, erste Zeile (nicht Node !) markieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
die Option ist gesetzt. Ich habe das mal angehängt. Sobald ich den FocusedNode per IterateSubTree noch mal suche, Wird die komplette Zeile korrekt markiert. Heiko |
Re: TVirtualStringTree, erste Zeile (nicht Node !) markieren
Versuch es mal mit der "Selected[]"-Property des VST für diesen Node.
Viele Grüße |
Re: TVirtualStringTree, erste Zeile (nicht Node !) markieren
Ha !!!
Delphi-Quellcode:
Genau das war es.
LV_WorkSteps.FocusedNode:= LV_WorkSteps.GetFirst;
LV_WorkSteps.Selected[LV_WorkSteps.GetFirst]:= True; Ich hatte Selected auch schon in der Mangel, liess sich aber nicht compilieren, weil ich es falsch benutzt habe. Ich denke halt immer noch wie beim normalen TTreeView. Das FocusedNode muss übrigens drinbleiben, weil ich auf OnFocusChanged reagieren muss. Danke !!! Heiko |
Re: TVirtualStringTree, erste Zeile (nicht Node !) markieren
auch wenn es nicht ganz zum Problem paßt, aber es wäre etwas besser, wenn du bei einer Typkonvertierung die Reinfolge änderst.
Code:
wenn GetNodeData hier einen typisierten Zeiger liefern würde,
[color=#000080]// statt[/color]
DataItem := [color=#ff0000][b]T[/b][/color]DateItem(LV_WorkSteps.GetNodeData(...)[color=#ff0000][b]^[/b][/color]); [color=#000080]// lieber[/color] DataItem := [color=#ff0000][b]P[/b][/color]DateItem(LV_WorkSteps.GetNodeData(...))[color=#ff0000][b]^[/b][/color]; und somit die Typen nicht kompatibel wären, könnte es sonst Probleme geben oder es schmiggelt |
Re: TVirtualStringTree, erste Zeile (nicht Node !) markieren
Hallo,
ne ;) Das wird nie ein typisierter Pointer sein. Ist ja Sinn der Sache, dass jeder seine eigene Klasse benutzt. Ausserdem bräuchte ich da ja einen Pointer auf meine Klasse, das will ich nicht. Delphi macht das ja fein im Hintergrund. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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