Thema: Delphi class mit Name-Property

Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

class mit Name-Property

  Alt 1. Aug 2009, 21:58
hallo,

ich habe mehrere Klassen, die ähnlich der folgenden aufgebaut sind:

Delphi-Quellcode:
unit Klasse_Rect;

interface

uses
  Classes, Contnrs, SysUtils, Graphics, ExtCtrls, Funktionen;

//const

type
  TRectFeld = class (TObject)
  private
    { Private-Deklarationen }
    //interne Variablen
    FRectZaehler : Integer;

    //fixe Daten
    FLeft : Integer;
    FTop : Integer;
    FHeight : Integer;
    FWidth : Integer;
    FPenWidth : Integer;
    FFarbe : TColor;
    FMaskFaktoren : TMaskFaktoren;

    //variable Daten

    //

  public
    { Public-Deklarationen }
    constructor Create;
    destructor Destroy;

    procedure CreateInMaske(Maske: TPanel);
  published
    { Published-Deklarationen }

    property PenWidth : Integer read FPenWidth write FPenWidth;
    property Farbe : TColor read FFarbe write FFarbe;
    property MaskFaktoren : TMaskFaktoren read FMaskFaktoren write FMaskFaktoren;

    property Left : Integer read FLeft write FLeft;
    property Top : Integer read FTop write FTop;
    property Height : Integer read FHeight write FHeight;
    property Width : Integer read FWidth write FWidth;
  end;

{ Aufrufe }

implementation

//----------------------------------------------------------------------------//

//-----------------------------------PRIVATE----------------------------------//

//-----------------------------------PUBLIC-----------------------------------//

constructor TRectFeld.Create;
begin
  inherited Create;

  //Variablen beschreiben
  FRectZaehler := 0;
end;

destructor TRectFeld.Destroy;
begin
  //interne Variablen freigeben

  inherited Destroy;
end;

procedure TRectFeld.CreateInMaske(Maske: TPanel);
var
  Dummy_Rect: TShape;

begin
  //Zähler hochzählen
  inc(FRectZaehler);

  //Rect erzeugen
  Dummy_Rect := TShape.Create(Maske);

  with Dummy_Rect do
    begin
      //feste Werte
      Parent := Maske;
      Enabled := true;
      Visible := true;
      Brush.Style := bsClear;

      Name := SysUtils.Format('Rect_%d', [FRectZaehler]);

      Left := GroessenFaktor(MaskFaktoren.MaskFaktor_Height, FLeft);
      Top := GroessenFaktor(MaskFaktoren.MaskFaktor_Height, FTop);
      Width := GroessenFaktor(MaskFaktoren.MaskFaktor_Height, FWidth);
      Height := GroessenFaktor(MaskFaktoren.MaskFaktor_Height, FHeight);

      Pen.Color := FFarbe;
      Pen.Width := FPenWidth;

      //Ereignisse
    end;
end;

//----------------------------------------------------------------------------//

end.
Wenn ich nun diese Klasse erzeuge, dann möcht ich jeder Instanz einen definierten Namen geben.
Ich hätt das gerne genau so, wie es z. B. bei einem Button ist (Button1, Button2, Button_Hugo,...)
Nur ein Button ist eine Komponente. Aber kann man das auch für Klassen machen?

Wieso das ganze: Ich möchte die einzeln erstellen Klassen mit deren Namen in einer Liste speichern
und später dann über den namen auf die Klassen zugreifen.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat