Einzelnen Beitrag anzeigen

Novi

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

VirtualTree EIntOverflow beim Beenden nach Expand (gelöst)

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