Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Array-Eigenschaften in eigenen Komponenten? Wie?

  Alt 21. Okt 2003, 14:59
Moin Matthias,

vereinfach könnte das so aussehen:

Delphi-Quellcode:
  TsvListe = class (TListBox)
  private
    function getColWidths(Index: Integer): INTEGER;
    procedure setColWidths(Index: Integer; const Value: INTEGER);
  protected
      FColWidths: array of integer;
// ...
  public
// ...
      property ColWidths[Index: Integer]: INTEGER read getColWidths write setColWidths;
  end;
implementation

{$R *.DFM}

{ TsvListe }

function TsvListe.getColWidths(Index: Integer): INTEGER;
begin
  Result := FColWidths[Index];
end;

procedure TsvListe.setColWidths(Index: Integer; const Value: INTEGER);
begin
  FColWidths[Index] := Value;
end;
Interne Felder würde ich allerdings auch immer unter private legen.

Ob Du nun ein statisches oder dynamisches array verwendest hängt davon ab, was Du brauchst.
Bei einem dynamischen array musst Du halt selber die Grösse verwalten, am Besten auch einen Index, der auf das nächste zu nutzende Element zeigt.
Ein dynamisches array sollte möglichst so gross initialisiert werden, wie man es braucht, und nur falls man sich doch verschätzt hat muss man es vergrössern. Deshalb ein Index, da man in diesem Falle nicht mit high(array) arbeiten kann.
Beim Vergrössern werden die Inhalte von dynamischen arrays i.d.R. in den neuen Speicherbereich umkopiert, und das gilt es zu vermeiden.

Wenn Du mindestens eine Pro Version hast kannst Du übrigens einfach mit dem Cursor in die Propertyzeile gehen, und STRG-SHIFT-C drücken, damit die Klasse automatisch vervollständigt wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat