AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree - FullExpand Problem

Ein Thema von UMOL · begonnen am 26. Jan 2009 · letzter Beitrag vom 27. Jan 2009
 
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
316 Beiträge
 
Delphi 12 Athens
 
#13

Re: VirtualStringTree - FullExpand Problem

  Alt 27. Jan 2009, 21:19
Zitat von UMOL:
Ich glaube, wir reden aneinander vorbei... ;-)
Ja das ist wohl wahr.

OnGetText ist die falsche Prozedur, um mittels StringList die Daten komplett zu beschaffen. Normalerweise beschaffst Du Dir Deine Daten einmalig und hältst sie in einem ContainerObjekt (z.B. der Stringlist). Den VTV baust Du einmalig auf und weisst dabei den Nodes Objekte aus dem ContainerObjekt zu. D.h. ein Node hat die Referenz auf ein Objekt.

In OnGetText wird dann nichts anderes gemacht, als die Referenz auf das Objekt des Nodes (dessen Text bei OnGetText dargestellt werden soll) aufzulösen und dann den String mit entsprechenden Daten des Objektes zu füllen.
Beispiel:

Delphi-Quellcode:
type
  TVST_Hostlist_Node = record
    HostObj: THost;
  end;
  PVST_Hostlist_Node = ^TVST_Hostlist_Node;
Delphi-Quellcode:
function vst_Add_Host(_vst: TVirtualStringTree; _parentNode: PVirtualNode; _Host: THost): PVirtualNode;
var
  Data : PVST_Hostlist_Node;
begin
  Result := _vst.AddChild(_parentNode); // Child-Node erzeugen
  _vst.ValidateNode(Result, False); // Pointer initialisieren
  Data := _vst.GetNodeData(Result); // Pointer auf Child-Datenbereich holen
  Data^.HostObj := _Host;
  Logger.Debug2Log('vst_Add_Host: ' + _Host.toString);
end;
Delphi-Quellcode:
procedure TForm1.VST_HostListGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  NodeData : PVST_Hostlist_Node;
  lHost : THost;
begin
  NodeData := Sender.GetNodeData(Node);
  lHost := NodeData.HostObj;
  if lHost <> nil then begin
    case Column of
      0: CellText := lHost.Hostname;
      1: CellText := lHost.Hostadress;
      2: CellText := lHost.ClientCounterStr;
      3: CellText := '';
      4: CellText := '';
    end;
  end;
end;
Gruß,
Christoph
  Mit Zitat antworten Zitat
 


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 03:57 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