Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponente property index (https://www.delphipraxis.net/91317-komponente-property-index.html)

SvB 3. Mai 2007 10:32


Komponente property index
 
Hallo,

bin gerade dran mir selbst eine Komponente zu schreiben und habe in verschiedenen Quellcodes folgendes gesehen

Delphi-Quellcode:
    property Cut: Boolean index 0 read GetState write SetState;
Für was ist dieses "index 0" denn genau. Habe irgendwie keine Dokumentation gefunden, wo das erklärt wird. Würde mich interessieren, für was das gut ist.

Danke Sven

chaosben 3. Mai 2007 10:43

Re: Komponente property index
 
Mit dem Index kann man mehrere Properties über ein und dieselbe Getter/Setter-Funktion lesen/schreiben.

Zitat:

Zitat von Die Delphihilfe ©Borland
Indexbezeichner
Mithilfe von Indexbezeichnern können mehrere Eigenschaften dieselbe Zugriffsmethode verwenden, auch wenn sie unterschiedliche Werte repräsentieren. Indexbezeichner bestehen aus der Direktive index und einem Integer-Wert zwischen -2.147.483.647 und 2.147.483.647. Bei Eigenschaften mit Indexbezeichnern muss auf die Direktiven read und write eine Methode (kein Feld) folgen. Zum Beispiel:
Delphi-Quellcode:
 type
   TRectangle = class
     private
       FCoordinates: array[0..3] of Longint;
       function GetCoordinate(Index: Integer): Longint;
       procedure SetCoordinate(Index: Integer; Value: Longint);
     public
       property Left: Longint index 0 read GetCoordinate write SetCoordinate;
       property Top: Longint index 1 read GetCoordinate write SetCoordinate;
       property Right: Longint index 2 read GetCoordinate write SetCoordinate;
       property Bottom: Longint index 3 read GetCoordinate write SetCoordinate;
       property Coordinates[Index: Integer]: Longint read GetCoordinate write SetCoordinate;
       ...
   end;
Eine Zugriffsmethode für eine Eigenschaft mit einem Indexbezeichner benötigt einen zusätzlichen Wert-Parameter vom Typ Integer. Bei einer read-Funktion muss dies der letzte, bei einer write-Prozedur der vorletzte Parameter sein. Diese Konstante (der Index) wird beim Zugriff auf die Eigenschaft automatisch an die Zugriffsmethode übergeben.

Wenn Rectangle ein Objekt der zuvor deklarierten Klasse TRectangle ist, dann ist die Anweisung
Delphi-Quellcode:
Rectangle.Right := Rectangle.Left + 100;
mit der folgenden Anweisung identisch:
Delphi-Quellcode:
Rectangle.SetCoordinate(2, Rectangle.GetCoordinate(0) + 100);


SvB 3. Mai 2007 11:02

Re: Komponente property index
 
Alles klar, das habe ich im Quellcode irgendwie nicht beachtet, dass es die selben Getter-Setter sind.
Ich hatte gedacht, das ist vielleicht irgendeine Sortierung für den Objektinspektor :(

Danke Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz