Ich meinte eigentlich array-properties, nicht properties eines array-typs
Ungefähr so:
Delphi-Quellcode:
TArrayWrapper = class;
TArr = array of integer;
TOnChanged = procedure (sender:TArrayWrapper) of object;
TArrayWrapper = class(TObject)
private
FArr:TArr;
FOnChanged: TOnChanged;
function getCount: integer;
procedure SetCount(const Value: integer);
function GetItems(Index: Integer): integer;
procedure SetItems(Index: Integer; const Value: integer);
public
constructor Create(aOnChange:TOnChanged);
destructor Destroy; override;
property OnChange:TOnChanged read FOnChanged write FOnChanged;
property Count:integer read getCount write SetCount;
property Items[Index: Integer]: integer read Getitems write Setitems; default;
end;
implementation
{ TArrayWrapper }
constructor TArrayWrapper.Create(aOnChange: TOnChanged);
begin
FOnChanged := aOnChange;
end;
destructor TArrayWrapper.Destroy;
begin
count := 0;
inherited;
end;
function TArrayWrapper.getCount: integer;
begin
result := length(FArr);
end;
procedure TArrayWrapper.SetCount(const Value: integer);
begin
setLength(FArr,Value);
end;
function TArrayWrapper.Getitems(Index: Integer): integer;
begin
result := FArr[Index];
end;
procedure TArrayWrapper.Setitems(Index: Integer; const Value: integer);
begin
FArr[Index] := Value;
if assigned(OnChange) then OnChange(self); // event aufrufen!!!
end;
Du musst dann nur noch eine instanz, mit eventhandler als parameter, erstellen und schon hast du den gewünschten effekt
// edit: items als default-property definiert
mâxîmôv.
{KDT}