![]() |
Eigene TObjectList
Hallo zusammen,
ich habe nach dem Tutorial mir meine eigene TObjectList zusammengebaut :
Delphi-Quellcode:
In meiner TKlasse reagiere ich in den Set-Proceduren entsprechend auf die Variable NewRecord. Das funktioniert auch wunderbar. Nur wie kann ich die Variable NewRecord ebenfalls auf True ändern, wenn ein Wert in der Klasse neu geschrieben wird ? Dieses darf aber nur passieren, wenn nicht die Funktion Add ausgeführt wird. Bei Add muss der Wert NewRecord=false sein.
TCustomObjectList = class(TObjectList)
protected function getItem(Index: Integer): TKlasse; virtual; procedure setItem(Index: Integer; Objekt: TKlasse); virtual; public function Add(Objekt: TKlasse): Integer; virtual; function NewRecord(Objekt: TKlasse): Integer; virtual; function Remove(Objekt: TKlasse): Integer; virtual; function IndexOf(Objekt: TKlasse): Integer; virtual; procedure Insert(Index: Integer; Objekt: TKlasse); virtual; function First: TKlasse; virtual; function Last: TKlasse; virtual; property Items[index: Integer]: TKlasse read getItem write setItem; default; end; function TCustomObjectList.getItem(Index: Integer): TKlasse; begin Result := TKlasse(inherited Items[Index]); end; procedure TCustomObjectList.setItem(Index: Integer; Objekt: TKlasse); begin inherited Items[Index] := Objekt; end; function TCustomObjectList.Add(Objekt: TKlasse): Integer; begin Result := inherited Add(Objekt); Objekt.NewRecord := False; end; function TCustomObjectList.NewRecord(Objekt: TKlasse): Integer; begin Result := inherited Add(Objekt); Objekt.NewRecord := True; end; function TCustomObjectList.First: TKlasse; begin Result := inherited TKlasse(First()); end; function TCustomObjectList.IndexOf(Objekt: TKlasse): Integer; begin Result := inherited IndexOf(Objekt); end; procedure TCustomObjectList.Insert(Index: Integer; Objekt: TKlasse); begin inherited Insert(Index, Objekt); end; function TCustomObjectList.Last: TKlasse; begin Result := inherited TKlasse(Last()); end; function TCustomObjectList.Remove(Objekt: TKlasse): Integer; begin Result := inherited Remove(Objekt); end; Im Moment löse ich das Setzen der Variable in dem OnExit-Event der Eingabe-Komponente. |
Re: Eigene TObjectList
In der Klasse, die in der Objektliste gespeichert wird?
Also was ich mir vorstellen könnte, dass du die Klassen, die da reinsollen alle so konstruierst, dass sie von einer generischen Klasse ableiten, die diese Eigenschaft "NewRecord" besitzt. Und innerhalb der Unterklassen müsstest Du entsprechend alle Setter definieren und dort NewRecord auf False setzen. Ob da was mit der neuen RTTI ala Delphi 2010 geht, das etwas allgemeiner zu gestalten, kann ich allerdings (noch) nicht sagen... Viele Grüße |
Re: Eigene TObjectList
Hallo David,
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz