AGB  ·  Datenschutz  ·  Impressum  







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

Virtual TreeView

Ein Thema von celinaw · begonnen am 25. Apr 2004 · letzter Beitrag vom 27. Apr 2004
Antwort Antwort
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#1

Re: Virtual TreeView

  Alt 26. Apr 2004, 09:18
der vst ist um einiges schnell als der treeview von windows.

der trick ist die statische speicherverwaltung.
erstell mal ein form, ein vst drauf, 4 spalten

um mit den vst zu arbeiten muss du dir erstmal ein record erstellen welches dann spaeter die daten halten soll.
desweiteren brauchst du einen zeiger auf deine daten.

Delphi-Quellcode:
type
  pVstDaten = ^rVstDaten;
  rVstDaten = Record
    spalte1, spalte2, spalte3 : String;
  end;
nun muss du den vst noch mitteilen wie gross deine daten sind.
das geht am besten im form.create

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  VirtualStringTree1.NodeDataSize:=sizeof(rVstDaten);
end;
wenn jetzt ein knoten hinzugefügt wird weiss der vst wieviel platz er jedesmal allocen muss.
um den tree zu füllen machst du folgendes:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
    aktueller_knoten : PVirtualNode;
    Daten_zum_knoten : pVstDaten;
begin
  // u.a. neuzeichnen verhindern
  VirtualStringTree1.BeginUpdate;
  for i:=0 to 1000 do
  begin
    aktueller_knoten:=VirtualStringTree1.AddChild(nil);
    Daten_zum_knoten:=VirtualStringTree1.GetNodeData(aktueller_knoten);

    Daten_zum_knoten.zeile:=i;
    Daten_zum_knoten.spalte1:='Das ist der Text Spalte: 1 Zeile:'+inttostr(i);
    Daten_zum_knoten.spalte2:='Das ist der Text Spalte: 2 Zeile:'+inttostr(i);
    Daten_zum_knoten.spalte3:='Das ist der Text Spalte: 3 Zeile:'+inttostr(i);
  end;
  // wieder zeichnen lassen;
  VirtualStringTree1.EndUpdate;
end;

da baum zeigt jetzt erstmal nur "node" als text an.
es gibt ein ereignis "ongettext"
dort gibts du den text zurueck der im knoten angezeigt werden soll.
hat den vorteil das du die daten beliebig aufbereiten kannst.

procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);

var Daten_zum_knoten : pVstDaten;
begin
  Daten_zum_knoten:=VirtualStringTree1.GetNodeData(node);

  if TextType=ttNormal then
  begin
    case Column of
      0: CellText:=Daten_zum_knoten.spalte1;
      1: CellText:=Daten_zum_knoten.spalte2;
      2: CellText:=Daten_zum_knoten.spalte3;
      3: celltext:='Nun die Dynamische Spalte Nummer 4 mit Zeile:'+IntToStr(Daten_zum_knoten.zeile);
    end;
  end;
end;
so das sollte es sein.
  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 16:38 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