Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
4. Jul 2007
Sollte eigentlich nicht sein. RescalePage wird in UpdatePage von PageCollection aufgerufen und nicht von TempPageCollection. Und die Liste in PageCollection wird ja nie gelöscht bzw. geleert.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
3. Jul 2007
Ich sehe gerade im Debugger:
Heißt dass, dass da schon was freigegeben wurde? Ich wüsste aber nicht wo das im Quelltext passiert sein sollte.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
3. Jul 2007
Ich habe mal nachgeguckt. Clear von TList setzt nur die Länge und Kapazität auf null. Da wird also nichts freigegeben.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
3. Jul 2007
@David: Weil ich damit am Anfang unerklärliche Probleme hatte.
TPageCollection = class(TObject)
private
FInnerList: TList;
FPageParent: TWinControl;
FPageOptions: TPageProperties;
FScaleFactor: Double;
FOnAfterAdd: TOnAfterAdd;
FOnAfterDelete: TOnAfterDelete;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
3. Jul 2007
Ich habe es jetzt so:
procedure TPageCollection.Clear;
var
i: Integer;
begin
for i := Self.FInnerList.Count - 1 downto 0 do
begin
TObject(Self.FInnerList.Items).Free;
Self.FInnerList.Items := Nil;
Self.FInnerList.Delete(i);
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
3. Jul 2007
Die innere Liste wird im Konstruktor erzeugt und im Destruktor wieder freigegeben. Und die TempPageCollection existiert auch. Durch die Schleife in der Clear-Methode läuft er ja auch durch, nur in der darauffolgenden Assign-Methode kracht es dann und zwar wenn der betreffende Code zum zweiten mal aufgerufen wird. Aber ich kopiere ja, also dürfte die Clear-Methode ja nichts aus der original Liste...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
3. Jul 2007
function TPageCollection.GetItem(Index: Integer): TImageEnVect;
begin
Result := FInnerList.Items;
end;
procedure TPageCollection.SetItem(Index: Integer; Item: TImageEnVect);
begin
FInnerList.Items := Item;
end;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Luckie,
3. Jul 2007
Ich habe eine Klasse von TObject abgeleitet mit einer inneren Liste vom Typ TList. Diese fülle ich mit Objekten. Hin und wieder muss ich eine Kopie dieser Liste anfertigen. Dazu hab eich mir eine Methode Assign geschrieben:
procedure TPageCollection.Assign(Source: TPageCollection);
var
i : Integer;
j : Integer;
hobj : Integer;
hObjSource...