Einzelnen Beitrag anzeigen

Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Ereignisprogrammierung in Delphi

  Alt 23. Jun 2004, 13:51
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}
  Mit Zitat antworten Zitat