AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)

Ein Thema von Novi · begonnen am 13. Mär 2014 · letzter Beitrag vom 14. Mär 2014
Antwort Antwort
Seite 1 von 2  1 2      
Novi

Registriert seit: 1. Mai 2006
7 Beiträge
 
#1

VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)

  Alt 13. Mär 2014, 06:06
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?

Geändert von Novi (13. Mär 2014 um 08:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: VirtualTree EIntOverflow beim Beenden nach Expand

  Alt 13. Mär 2014, 07:20
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Novi

Registriert seit: 1. Mai 2006
7 Beiträge
 
#3

AW: VirtualTree EIntOverflow beim Beenden nach Expand

  Alt 13. Mär 2014, 07:40
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)
  Mit Zitat antworten Zitat
Novi

Registriert seit: 1. Mai 2006
7 Beiträge
 
#4

AW: VirtualTree EIntOverflow beim Beenden nach Expand

  Alt 13. Mär 2014, 08:13
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: VirtualTree EIntOverflow beim Beenden nach Expand

  Alt 13. Mär 2014, 08:28
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.

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.

... 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

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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Novi

Registriert seit: 1. Mai 2006
7 Beiträge
 
#6

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

  Alt 13. Mär 2014, 08:55
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 ...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.357 Beiträge
 
Delphi 11 Alexandria
 
#7

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

  Alt 13. Mär 2014, 09:02
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Novi

Registriert seit: 1. Mai 2006
7 Beiträge
 
#8

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

  Alt 13. Mär 2014, 09:14
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
  Mit Zitat antworten Zitat
Novi

Registriert seit: 1. Mai 2006
7 Beiträge
 
#9

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

  Alt 13. Mär 2014, 09:20
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?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

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

  Alt 13. Mär 2014, 15:32
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)

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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (13. Mär 2014 um 15:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 15:48 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