AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualTreeView: Konten n auswählen/markieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeView: Konten n auswählen/markieren

Ein Thema von Viktorii · begonnen am 27. Nov 2008 · letzter Beitrag vom 28. Nov 2008
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 11:50
Hallo zusammen.

Wie kann ich im Code den Knoten n auswählen/markieren/fokusieren?

Ich habe es mal so versucht, bekomme aber ne Exception:

myVST.FocusedNode.Index := StrToInt(EditListCount.Text); Wie mache ich es richtig?
Vielen Dank
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#2

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 12:05
Delphi-Quellcode:
vst.FocusedNode := NodeToFocus;
if Assigned(vst.FocusedNode) then
  vst.Selected[vst.FocusedNode] := True;
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#3

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 12:14
Wenn ich es so mache:

Delphi-Quellcode:
var
  NodeToFocus : Integer;

begin
  NodeToFocus := StrToInt(EditListCount.Text);
  VST.FocusedNode := NodeToFocus;
  if Assigned(VST.FocusedNode) then
    VST.Selected[VST.FocusedNode] := True;

...
...
bekomme ich folgenden Fehler:

Zitat:
[DCC Fehler] RS422LogParser_MainUnit.pas(240): E2010 Inkompatible Typen: 'PVirtualNode' und 'Integer'
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#4

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 12:39
Kenne VST nicht, aber es wird offenbar ein Zeiger auf eine Node erwartet. Du musst also aus dem Integer-Index einen Zeiger auf eine Node machen. Im "normalen" Treeview gibt's da "Items[Index]"...
Ralph
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#5

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 12:51
was steht den in EditListCount.Text?

wenn drin steht, dass wievielte node von oben es ist müsste das so gehen:
Delphi-Quellcode:

var
 node : pvirtualnode;
begin
  node := vst.GetFirst;

  for i = 0 to strtoint(EditListCount.Text) do
  begin
    node := vst.GetNext(node);
  end;
  vst.focusednode := node;
  VST.Selected[VST.FocusedNode] := True;
end;
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#6

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 12:52
VST ist vom Typ VirtualStringTree und NodeToFocus vom Typ PVirtualNode.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#7

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 13:14
Ich möchte gerne einen gewissen Knoten selektieren.

Ich habe also eine Variable vom Typ Integer. In der steht beispielsweise der Wert 12.

Wie bekomme ich es nun hin, dass in diesem Fall der zwölfte Knoten mit dem blauen Balken im VST selektiert ist.



var
NodeToFocus : Integer;
begin
NodeToFocus := 12;

???
???


Wie würde es nun weitergehen?


EDIT:

Zitat von itashadow:
was steht den in EditListCount.Text?

wenn drin steht, dass wievielte node von oben es ist müsste das so gehen:
Delphi-Quellcode:

var
 node : pvirtualnode;
begin
  node := vst.GetFirst;

  for i = 0 to strtoint(EditListCount.Text) do
  begin
    node := vst.GetNext(node);
  end;
  vst.focusednode := node;
  VST.Selected[VST.FocusedNode] := True;
end;
Das scheint genau das zu machen was ich wollte. Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 27. Nov 2008, 17:06
besser wäre allerdings

Delphi-Quellcode:
  node := vst.RootNode.FirstChild;

  while node <> nil do
  begin
    if Integer(Node.Index) = strtoint(EditListCount.Text) then
      break;
    node := Node.NextSibling;
  end;
Sven Harazim
--
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#9

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 28. Nov 2008, 07:56
Zitat von sh17:
besser wäre allerdings

Delphi-Quellcode:
  node := vst.RootNode.FirstChild;

  while node <> nil do
  begin
    if Integer(Node.Index) = strtoint(EditListCount.Text) then
      break;
    node := Node.NextSibling;
  end;
Aus welchem Grund ist das besser? Ist das performanter?
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: VirtualTreeView: Konten n auswählen/markieren

  Alt 28. Nov 2008, 08:02
Nein - sicherer

Bei der vorherigen Variante ist nicht sichergestellt, dass überhaupt soviel Knoten wie der gewünschte Index vorhanden sind. Da kann schon mal ein Node = nil auftreten. Und implizit davon auszugehen, das Node.Index = i ist ist auch etwas schwammig.

Zumal Du jetzt noch optimieren kannst, indem Du nicht bei FirstChild anfängst, sondern bei irgend einem Knoten, den Du grad am Wickel hast. Dann musst Du nur noch schauen, ob Dur vorwärts oder rückwärts gehen musst. Das wäre dann was für die Performance.

Gruß, Sven
Sven Harazim
--
  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 23:54 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