AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree Einsteigerhilfe

Ein Thema von Paul Schmidt · begonnen am 7. Feb 2006 · letzter Beitrag vom 7. Feb 2006
Antwort Antwort
Paul Schmidt

Registriert seit: 7. Feb 2006
22 Beiträge
 
#1

VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 19:53
Erstmal ein freundliches Hallo!

Also: ich bin noch einigermaßen neu in Delphi und hab mal ne Frage zur Komponente "VirtualStringTree".

kurze Beschreibung:

ich habe eine Liste (TStringList) und darin Zeilen in etwa so:

Schlüssel 1 = Wert 1
Schlüssel 1 = Wert 2
Schlüssel 1 = Wert 3
Schlüssel 1 = Wert 4
Zeichenfolge 2 = Wert 1
Zeichenfolge 2 = Wert 2
Zeichenfolge 2 = Wert 3
Zeichenfolge 2 = Wert 4
Zeichenfolge 2 = Wert 5
BlaBla 3 = Wert 1
BlaBla 3 = Wert 2
Schlüssel 4 = Wert 1

Jetzt hätte ich diese Liste gerne in einem VirtualStringTree dargestellt und zwar folgendermaßen:

() Schlüssel 1
|-----()Wert 1
|-----()Wert 2
|-----()Wert 3
|-----()Wert 4
() Zeichenfolge 2
|-----()Wert 1
|-----()Wert 2
|-----()Wert 3
|-----()Wert 4
|-----()Wert 5
() BlaBla 3
|-----()Wert 1
|-----()Wert 2
() Schlüssel 4
|-----()Wert 1
|-----()Wert 2


Wie stelle ich das an?

Könnte vllt. mal jmd. ein kurzes Beispiel aufschreiben? Wichtig wäre mir zu wissen, was ich machen muss, um jeder Node im Baum einen unterschiedlichen Text zuzuweisen. Also was muß ich "einstellen", damit der Konten 1 "Schlüssel 1", der 2. Knoten "Zeichenfolge 2", der 3. "BlaBla 3" heißt usw. ? Wie muss ich vor der Zuweisung diesen Datenrecord definieren?
Hab jetzt schon 'ne Weile gekämpft und mir auch die Demos angeschaut, die mit dabei waren, aber ich komm da einfach noch nicht damit zurecht.

Es wäre also nett, wenn mir da mal jmd. weiterhelfen könnte. Bin für jeden Hinweis und Codeschnipsel dankbar!

Schönen Gruß,
Paule
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 20:17
Also wenn du bis Samstag noch keine Lösung hast, könnt ich dir ein kleines Beispiel reinstellen. Vorher komme ich nicht dazu.


Aber vermutlich kann man dir besser helfen, wenn man wüßte wo es genau hapert bzw. was Du schon probiert hast.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Paul Schmidt

Registriert seit: 7. Feb 2006
22 Beiträge
 
#3

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 20:28
Hui, das ging aber schnell!

Naja, vllt. fehlt mir auch noch ein wenig das Verständnis für VirtualStringTree.

Also es hapert daran, dass ich nicht weiss, wie ich, wenn ich einen neuen Node hinzufügen will, diesem Node seinen eigenen Text zuweise.
Also so in der Art:

Node.Text := 'BlaBla3'

und dann halt hinzufügen.

Wie gesagt, ich bin noch neu auf dem Gebiet und muss mich erstmal reinarbeiten.
Mit 'nem kleinen Beispiel wäre das schon einfacher.

Wenn du mir da was reinstellen könntest, wäre das super !

Gruß,
Paule
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 20:43
Herzlich willkommen in der Delphi-PRAXiS, Paul.

Magst du etwas lesen, während du auf den Code von Günter wartest? klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 20:44
Hi, herzlich willkommen

Zitat von Paul Schmidt:
Also es hapert daran, dass ich nicht weiss, wie ich, wenn ich einen neuen Node hinzufügen will, diesem Node seinen eigenen Text zuweise.
Das musst du über's Ereignis OnGetText machen. So in der Art:

Delphi-Quellcode:
procedure TFormMain.vstQuickbarGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
begin
  CellText := 'blubb';
end;
  Mit Zitat antworten Zitat
Paul Schmidt

Registriert seit: 7. Feb 2006
22 Beiträge
 
#6

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 20:51
Hmm...
ich muss ehrlich gestehen, dass mir das ned viel sagt.

Könnt ihr mir vllt. mal ein einfaches Beispiel geben, wie ich z.B. 2 nodes in solch einen VirtualStringTree einfüge.
also: der root-node soll "Root" heißen und sein child "child".

Wie muss der Code dafür aussehen?


Gruß,
Paule

PS: und bitte nicht hauen, wenn ich dumme Fragen stelle. Muss ja erstmal klein anfangen.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 21:10
Hallo Paule

Zitat von Paul Schmidt:
Könnt ihr mir vllt. mal ein einfaches Beispiel geben, wie ich z.B. 2 nodes in solch einen VirtualStringTree einfüge.
also: der root-node soll "Root" heißen und sein child "child".
Klar kann ich das, aber "einfach" ist das nicht gerade mit diese Komponente, dafür sehr performant.

Delphi-Quellcode:
var
  Form2: TForm2;

type
  PTreeData = ^TTreeData;
  TTreeData = record
    Caption: String;
  end;

implementation

{$R *.dfm}

// Funktion zum Hinzufügen eines Eintrags
function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode;
  ARecord: TTreeData): PVirtualNode;
var Data: PTreeData;
begin
  Result := AVST.AddChild(ANode);
  Data := AVST.GetNodeData(Result);
  Avst.ValidateNode(Result, False);
  Data^.Caption := ARecord.Caption;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  TreeData : TTreeData;
begin
  TreeData.Caption := 'Root';

  // Größe festlegen
  VirtualStringTree1.NodeDataSize := SizeOf(TTreeData);
  // Knoten einfügen:
  AddVSTStructure(VirtualStringTree1, nil, TreeData);

  TreeData.Caption := 'child';

  // Größe festlegen
  VirtualStringTree1.NodeDataSize := SizeOf(TTreeData);
  // Eintrag einfügen
  AddVSTStructure(VirtualStringTree1, VirtualStringTree1.GetFirst, TreeData);
end;

// Erst hier wird der Text zugewiesen!
procedure TForm2.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  Data: PTreeData;
begin
  // Zugewiesened Node ermitteln ...
  Data := VirtualStringTree1.GetNodeData(Node);
  // ... und dessen Caption zuweisen
  CellText := Data^.Caption;
end;

Zitat von Paul Schmidt:
PS: und bitte nicht hauen, wenn ich dumme Fragen stelle. Muss ja erstmal klein anfangen.
Keine Sorge, das macht keiner. Nur über die Suche wärst du sicher auch fündig geworden, daher das nächste Mal davor suchen, dann nimmt dir's garantiert keiner übel.
  Mit Zitat antworten Zitat
Paul Schmidt

Registriert seit: 7. Feb 2006
22 Beiträge
 
#8

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 21:20
Dankeschön Matze!

Damit kann ich zumindest erstmal was anfangen. Werd' erstmal schauen, wie das jetzt funktioniert.
Meld mich wieder, wenn ich neue Fragen hab!

Gruß,
Paule
  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 22:40 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