AGB  ·  Datenschutz  ·  Impressum  







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

[VST] Daten hinzufügen ?

Ein Thema von Hansa · begonnen am 1. Mai 2008 · letzter Beitrag vom 5. Mai 2008
Antwort Antwort
Seite 1 von 3  1 23      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

[VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 15:05
Moin,

kennt einer den Lischkeschen VirtualStringTree etwas besser als ich ? Wo liegt hier der Fehler ?

Delphi-Quellcode:
type PMydata = ^TMyData;

  TMyData = Record
    st : string;
  end;

var
  Form1: TForm1;
  Data : PMyData;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
var NewNode : PVirtualNode;
begin
  with DS do begin
    Close;
    SelectSQL.Text := 'SELECT * FROM TABLE';
    Open;
    vst.NodeDataSize := SizeOf (TMyData);
    while not Eof do begin
      NewNode := vst.AddChild(nil);
      Data := vst.GetNodeData(NewNode);
      Data^.st := DS.FieldByName...;
      Next;
    end;
  end;
Es sind anscheinend genauso viele Nodes vorhanden, wie Datensätze gefunden werden. Soweit stimmt das. Obwohl, wie kriegt man eigentlich die Anzahl raus ? Aber die heißen alle "Node". Stattdessen soll ein Feld angezeigt werden (siehe FieldByName).
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 15:41
Zitat von Hansa:
Obwohl, wie kriegt man eigentlich die Anzahl raus ?
Delphi-Quellcode:
  TVirtualNode = packed record
    TotalCount, // sum of this node, all of its child nodes and their child nodes etc.
Zitat von Hansa:
Aber die heißen alle "Node". Stattdessen soll ein Feld angezeigt werden (siehe FieldByName).
Hast du OnGetText implementiert?
Thomas
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 19:14
Zitat von toms:
..Hast du OnGetText implementiert?
Erkläre mir, was die Parameter zu bedeuten haben, dann mache ich das. Aber ich sehe schon : hier kommt wohl kaum was. Der VST scheint nicht so verbreitet zu sein, wie von mir angenommen.

P.S.: TotalCount ist identisch mit "Count Records" in IBExpert. Das geht also so, wie vermutet. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 19:20
Ich mache es etwa so:

Delphi-Quellcode:
procedure TForm1.TreeGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
begin
  Data := vst.GetNodeData(Node);
  CellText := Data.st;
end;
Siehe auch VirtualTreeView Tutorial
Thomas
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 19:27
Thx, so gehts. Das ist aber wohl nur die Spitze des Eisbergs. Der Thread hier wird lang werden.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 19:52
Zitat von Hansa:
Thx, so gehts. Das ist aber wohl nur die Spitze des Eisbergs. Der Thread hier wird lang werden.
Kein Problem. Frag nur, falls du noch weitere Fragen hast.
Thomas
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 20:18
Du kennst dich damit aus ? Das ist gut. Das nächste ist jetzt : Detaildaten hinzuzufügen. Wie/wo kann man unterscheiden, ob überhaupt welche da sind (-> + erscheint) oder nicht ? Dann fehlt noch das Ereignis beim klicken auf das +. Ich muss da eben dann die Detaildaten zusammensuchen und anzeigen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 20:33
Zitat von Hansa:
Du kennst dich damit aus ? Das ist gut. Das nächste ist jetzt : Detaildaten hinzuzufügen. Wie/wo kann man unterscheiden, ob überhaupt welche da sind (-> + erscheint) oder nicht ? Dann fehlt noch das Ereignis beim klicken auf das +. Ich muss da eben dann die Detaildaten zusammensuchen und anzeigen.
Wenn du HasChildren eines Nodes auf True setzt, wird vor dem Node ein + angezeigt.

VST.HasChildren[Node] := True Im OnCollapsing kannst du dann die Kindernodes erzeugen.
Falls Node.FirstChild nicht NIL ist, existieren schon Unterknoten.
Thomas
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 21:13
D.h., ich muss selber ermitteln, ob Detaildaten vorhanden sind und dann HasChildren entsprechend setzen ? Dann müsste ich mal das Laufzeitverhalten überprüfen. Meine Testdaten liefern ca. 30.000 Haupt-Nodes und diese dürften jewils im Schnitt 10-30 Unternodes haben. Mit IsEmpty, Count (*), WHERE etc. dürfte das aber wohl gehen.

Allerdings ist folgendes noch unklar : bei den Hauptnodes brauche ich als Daten nur die Nr. Bei dn Detailnodes wird mehr gebraucht. Wie setze ich da konkret die Daten-Records ein (sizeof..) ? Ich muss das ja irgendwie unterscheiden. Und selbst wenn klar ist, ob ein + da ist oder nicht. Wie kriege ich nur dieses eine + aufgeklappt ? In der dann erscheinenden Liste müssten dann völlig andere Detaildaten drinstehen. Mal sehen, ob am "Tag der Arbeit" noch ein Ergebnis rauskommt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: [VST] Daten hinzufügen ?

  Alt 1. Mai 2008, 21:20
die Größe (SizeOf) setzt du einfach auf den größeren Record, oder du erstellst dir gleich Einen für beide

z.B.:
Delphi-Quellcode:
TMyNodeData = Record
  Case Integer of
    0: (
      {Typen für Hauptnode}
      Nr: Integer;
    );
    1: (
      {Typen für Detailnode}
      EtwasMehr...
    );
End;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:21 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