Delphi-PRAXiS
Seite 1 von 2  1 2      

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 VirtualTree EIntOverflow beim Beenden nach Expand (gelöst) (https://www.delphipraxis.net/179531-virtualtree-eintoverflow-beim-beenden-nach-expand-geloest.html)

Novi 13. Mär 2014 06:06


VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)
 
ich habe folgendes VST-DataObject
TGVSTData = record
Gebiet: TGebiet;
end;
PGVSTData = ^TGVSTData;

Childs werden so hinzugefügt
// #########>- GVST-füllen -<###########################
procedure TSFF.AddGebietsKategorienToGVST;
var
i: integer;
begin
for I := 0 to 2 do
AddGebietToGVST(GVST.RootNode, Gebiete[i]);
for i := 3 to Gebiete.Count - 1 do
AddGebietToGVST(GVST.RootNode.FirstChild, Gebiete[i]);
Include(GVST.RootNode.FirstChild.States, vsExpanded); [***1***]
end;
// #########>- GVST: Eintrag hinzufügen -<###############
procedure TSFF.AddGebietToGVST(PN: PVirtualNode; Gebiet: TGebiet);
var
N: PVirtualNode;
D: PGVSTData;
begin
N := GVST.AddChild(PN, D);
D := GVST.GetNodeData(N);
D.Gebiet := Gebiet;
end;

NUR wenn ich [***1***] Expandiere, muß ichs in ...

procedure TSFF.FormDestroy(Sender: TObject);
begin
Exclude(GVST.RootNode.FirstChild.States, vsExpanded);
...

wieder DE-Expandieren, sonst bekomme ich
EIntOverFlow (Integerüberlauf)
in VirtualTrees.pas
Zeile 27959:
... if ParentVisible and IsEffectivelyVisible[Run] then
Dec(FVisibleCount);

Also, meist liegts ja an mir, also wo kann ich gefailed haben, damit ich so einen seltsamen workaround brauche?
Ahja, und kennt wer ein aktuelles VirtualTreeForum? wo ich vielleicht besser aufgehoben wäre?

Stevie 13. Mär 2014 07:20

AW: VirtualTree EIntOverflow beim Beenden nach Expand
 
Da die fragliche Zeile in der aktuellsten Version die Nummer 27986 hat, vermute ich, du nutzt eine ältere Version.
Außerdem kann ich das von dir beschriebene Verhalten bei mir nicht nachstellen - Range und Overflow Checking ist an und ich kompiliere die VirtualTrees.pas mit dem Projekt neu (also hat diese auch Overflow Checking aktiviert).

Sollte nach einem Update der Fehler noch bestehen, häng mal ein SSCCE an.

Novi 13. Mär 2014 07:40

AW: VirtualTree EIntOverflow beim Beenden nach Expand
 
such mal in VirtualTrees.pas nach VTVersion, ich hab
VTVersion = '5.3.0';
Welche Version hast denn Du?

5.3.0 ist imho die letzte Aktuelle (zumindest auf https://code.google.com/p/virtual-tr...downloads/list)

Novi 13. Mär 2014 08:13

AW: VirtualTree EIntOverflow beim Beenden nach Expand
 
habe jetzt statt ...
// Include(GVST.RootNode.FirstChild.States, vsExpanded);

GVST.Expanded[GVST.RootNode.FirstChild] := true;

... zugewiesen, und siehe da, muss den Node beim Destroy jetzt nicht mehr explizit de-expandieren (find kein geeignetes Wort fürs Gegenteil von expandieren, schäm ;-))
Kann mich jetzt auch vage erinnern, dass ich mit Include bei den Node-States schon einmal Probleme hatte, ... hier also EINFACH NICHT VERWENDEN, denk ich mal ;-)
(mit VST.Expanded[Node] wird ja auch noch in der aufgerufenen Methode ToggleNode ein Wust an Code mitgeführt, was wohl bei einem normalen Include nicht der Fall ist)

Eine SSCCE erspar ich uns hiermit, wie krieg ich ein "gelöst" auf diesen Thread-Header?
PS: Herzlichen Dank für Antwort/Hilfe

Stevie 13. Mär 2014 08:28

AW: VirtualTree EIntOverflow beim Beenden nach Expand
 
Zitat:

Zitat von Novi (Beitrag 1251820)
such mal in VirtualTrees.pas nach VTVersion, ich hab
VTVersion = '5.3.0';
Welche Version hast denn Du?

5.3.0 ist imho die letzte Aktuelle (zumindest auf https://code.google.com/p/virtual-tr...downloads/list)

Ich hab immer die aktuellste Version aus dem Trunk - aber wenn du bei 5.3.0 bist, ist das nicht allzu lange her.

Zitat:

Zitat von Novi (Beitrag 1251826)
habe jetzt statt ...
// Include(GVST.RootNode.FirstChild.States, vsExpanded);

GVST.Expanded[GVST.RootNode.FirstChild] := true;

Kann mich jetzt auch vage erinnern, dass ich mit Include bei den Node-States schon einmal Probleme hatte, ... hier also EINFACH NICHT VERWENDEN, denk ich mal ;-)
(mit VST.Expanded[Node] wird ja auch noch in der aufgerufenen Methode ToggleNode ein Wust an Code mitgeführt, was wohl bei einem normalen Include nicht der Fall ist)

Jo, sollte generell die Methoden/Properties des Trees nehmen und nicht einfach den state ändern, da fehlt dann das Ausführen von notwendiger Programmlogik.

Zitat:

Zitat von Novi (Beitrag 1251826)
... zugewiesen, und siehe da, muss den Node beim Destroy jetzt nicht mehr explizit de-expandieren (find kein geeignetes Wort fürs Gegenteil von expandieren, schäm ;-))

collapse auf englisch - ich würd in deutsch aber eher ein- oder zuklappen statt kollabieren sagen ;)

Zitat:

Zitat von Novi (Beitrag 1251826)
Eine SSCCE erspar ich uns hiermit, wie krieg ich ein "gelöst" auf diesen Thread-Header?
PS: Herzlichen Dank für Antwort/Hilfe

Einfach den ersten Post editieren und dort den Titel ändern.

Novi 13. Mär 2014 08:55

AW: VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)
 
oh, ja, collapse, wie peinlich - hehe
Vielen Dank!
eins hab ich leider noch:
Was ist "aus dem Trunk"?
wenns dieses SVN-Ding is, das muss ich mir noch anschauen, wie das funktioniert ...

jaenicke 13. Mär 2014 09:02

AW: VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)
 
Zitat:

Zitat von Novi (Beitrag 1251833)
wenns dieses SVN-Ding is, das muss ich mir noch anschauen, wie das funktioniert ...

Ist es. Installiere einfach TortoiseSVN, kopiere den Pfad "http://virtual-treeview.googlecode.com/svn/trunk/" in die Zwischenablage, klicke in deinem Komponentenordner (irgendwo, nur nicht im Delphiverzeichnis) mit rechts und auf "SVN Checkout...", ändere ggf. noch den Zielpfad und klicke auf Ok. Das war es, im Zielpfad liegt nun die aktuelle Trunk Version.

Novi 13. Mär 2014 09:14

AW: VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)
 
geil, Vielen Dank!³, hat gleich auf Anhieb funktioniert.
Allerdings steht noch immer Version 5.3.0 ... scheint also in VirtualTrees.pas nix Neues dazugekommen zu sein

Novi 13. Mär 2014 09:20

AW: VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)
 
nur noch zur Sicherheit:
Du schriebst "(irgendwo, nur nicht im Delphiverzeichnis)", also mein VirtualTree-Root ist "D:\D2009\_3rds\Virtual Treeview" wobei "D:\D2009" sehr wohl mein Delphi-Verzeichnis ist, ist das jetzt schlecht?

Stevie 13. Mär 2014 15:32

AW: VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)
 
Zitat:

Zitat von Novi (Beitrag 1251838)
geil, Vielen Dank!³, hat gleich auf Anhieb funktioniert.
Allerdings steht noch immer Version 5.3.0 ... scheint also in VirtualTrees.pas nix Neues dazugekommen zu sein

Die Version wird immer nur bei Releases erhöht und nich bei jedem Commit.

Wenn wir uns also verständigen wollen, wer auf welchem Stand ist, reden wir im Falle von SVN von der Revision (z.B. gerade aktuell r609)

Zitat:

Zitat von Novi (Beitrag 1251839)
nur noch zur Sicherheit:
Du schriebst "(irgendwo, nur nicht im Delphiverzeichnis)", also mein VirtualTree-Root ist "D:\D2009\_3rds\Virtual Treeview" wobei "D:\D2009" sehr wohl mein Delphi-Verzeichnis ist, ist das jetzt schlecht?

Das passt schon so, du hast ja ganz offensichtlich ein eigenes Verzeichnis für 3rd Party Krams.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.
Seite 1 von 2  1 2      

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