Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [VST] Hinzugefügte Nodes sind nicht zu sehen (https://www.delphipraxis.net/145689-%5Bvst%5D-hinzugefuegte-nodes-sind-nicht-zu-sehen.html)

Hansa 6. Jan 2010 14:33


[VST] Hinzugefügte Nodes sind nicht zu sehen
 
Hi,

vorab : Titel geht nicht aussagekräftiger, weil Problem zu kompliziert zu beschreiben. :stupid:

Also : in einem VST müssen zusammengesuchte Daten aus 5 Tabellen angezeigt werden. Jetzt habe ich hierfür ein relativ umfangreiches SelectSQL zusammengebaut. Aber sieh an : es geht zu langsam. :shock: Der sucht sich ca. 500.000 Datensätze zusammen. Erstens dauert das schon und zweitens braucht so viel auf einmal niemand. Um den Einfluss des VST auzuschliessen habe ich das mit IBExpert getestet. Geht zwar schneller, aber bei DAUs besteht immer noch die Gefahr, dass die wegen 30 Sek. und mehr den Netzstecker ziehen. 8-)

Im FormShow befülle ich nun zuallererst NodeLevel 0. Sonst nichts. Um das + zu erzwingen, obwohl noch gar keine Unterknoten da
sind steht da noch folgendes drin :

Delphi-Quellcode:
vstZeig.HasChildren [NodeBez] := true;
Im OnExpanding steht das :

Delphi-Quellcode:
DS.Close;
DS.SelectSQL.Text := ...
DS.Open;
while not DS.Eof do begin
  NodeKopf := vstZeig.AddChild(NodeBez);
  Data := vstZeig.GetNodeData(NodeKopf);
  vstZeig.ValidateNode (NodeKopf, False);
  KopfVar := TKopf.Create;
  KopfVar.Nr := LeseIntFeld (DS,'NR');
  Data^.Table := KopfVar;
  DS.Next;
end;
Unterknoten werden keine angezeigt. Lediglich das + verschwindet. Steht derselbe Quelltext aber im OnShow, dann wird alles richtig angezeigt. Woran kann das liegen ? Ich bin per F8 die While-Schleife durchgehüpft. Das geht alles schon so wie es soll.

sirius 6. Jan 2010 14:46

Re: [VST] Hinzugefügte Nodes sind nicht zu sehen
 
Sieht soweit alles richtig aus. Ich benutze diese Vorgehensweise auch sehr oft.
Bist du dir sicher, dass Data auf die Richtige Stelle zeigt und dass NodeSize ausreichend groß ist?

Dale 6. Jan 2010 15:09

Re: [VST] Hinzugefügte Nodes sind nicht zu sehen
 
Hallo Hansa,
bist du dir sicher, dass "NodeBez" der Knoten ist, der in "OnExpanding" übergeben wird?

Gruß Dale

Hansa 6. Jan 2010 15:37

Re: [VST] Hinzugefügte Nodes sind nicht zu sehen
 
Thx, das war zumindest die halbe Miete. Habe den Parameter Node übersehen. Und der muss an AddChild übergeben werden, nicht NodeBez. Im FormShow wärs andersrum richtig und hat ja auch so geklappt. Jetzt klappen die Dinger jedenfalls auf. Zwar überall mit denselben Unterknoten, aber immerhin. :mrgreen:

Hansa 7. Jan 2010 18:49

Re: [VST] Hinzugefügte Nodes sind nicht zu sehen
 
Moin,

jetzt gibts noch eine Kleinigkeit : sofern das + mehrmals angeklickt wird, also ausklappen/einklappen, dann wird die Liste der Unterknoten immer länger. Wie unterbinde ich das ?

Ich finde weder eine Abfrage, ob der Knoten bereits mit Daten gefüllt ist, noch wie man alle Nodes ab einem bestimmten Hauptknoten löscht. 8)

Dale 8. Jan 2010 07:40

Re: [VST] Hinzugefügte Nodes sind nicht zu sehen
 
Hallo Hansa,

nun, das ist klar: du fügst ja jedesmal in "OnExpanding" die gleichen Knoten wieder ein. Das brauchst du natürlich nur einmal zu machen. Du könntest dir für jedes Rootnode merken, ob du die Unterknoten schon eingefügt hast. Dann brauchst du beim zweiten aufklappen nichts mehr zu tun.

Gruß
Dale

Hansa 8. Jan 2010 17:53

Re: [VST] Hinzugefügte Nodes sind nicht zu sehen
 
Zu dem Schluss bin ich auch gekommen.

Delphi-Quellcode:
TNodeObject = class
  gefuellt : Boolean;
end;

TTBezData = class(TNodeObject)
  BezID : Integer;
  Name : string;
end;
Beim ersten expanding dann noch das machen :

Delphi-Quellcode:
TBezData(Data^.Table).gefuellt := true;
Und beim nächsten mal eben auswerten. Allerdings : bei so einem komplexen Ding wie dem VST wundert mich schon, dass der das nicht bereits so ähnlich eingebaut haben sollte. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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