Einzelnen Beitrag anzeigen

usnzi02n4m
(Gast)

n/a Beiträge
 
#9

Re: 1 Frage zur Komponenten-Erstellung

  Alt 3. Dez 2005, 12:17
Hallo,

super, dass so viele antworten kommen

Eine Komponente zu erzeugen ist nicht das Problem. Das Grundgerüst steht und compilieren lässt sie sich auch schon, d.h. sie ist auch schon in der Komponentenleiste in der IDE verfügbar. Ich kann sie auch auf ein Formular ziehen und benutzen.

Zum Einstellen des Kartenwertes hatte ich der Komponente eine Eigenschaft Wert (property Wert: TKartenwert read...) spendiert. Dabei ist TKartenwert folgendes gewesen: TKartenwert = (KrAs, KrKo, KrDa, ... , Ka8, Ka7) also ein selbstdefinierter Aufzählungstyp. Im Objektinspector hatte man nun eine Eigenschaft, bei der man per DropDown-Liste den Wert auswählen durfte (z.B. KrAs).

Nun würde ich aber auch gerne die Karten über numerische Werte ansprechen können. Ansich kein Problem, da Delphi Aufzählungstypen selber ordnet und durchnummeriert. ABER im Objektinspector kann man nur über die DropDown-Liste (mit den KrAs,...) den Wert einstellen und nicht z.B. eine 1 eintragen für das Kreuz Ass.

Also hab ich mir angeschaut wie TColor implementiert wurde und hab meine Komponente folgendermassen geändert:

Delphi-Quellcode:
type
  TKartenwert = 0..32;
  TSpielkarte = class(TGraphicControl)
  private
    { Private-Deklarationen }
    bmp: TBitmap;
    value: TKartenwert;
    constructor Create(AOwner : TComponent); override;
    procedure Paint; override;
    procedure setValue(param: TKartenwert);
    destructor Destroy; override;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
    property Wert: TKartenwert read value write setValue;
  end;

const
  kwKrAs = TSpielkarte(1); // (K)arten(W)ert (Kr)euz(As)s
  kwKrKo = TSpielkarte(2); // (K)arten(W)ert (Kr)euz(Ko)enig
  ...
Aber ich kann nun im Objectinspector nur Zahlen von 0 bis 32 eintragen und keine Konstante wie z.B. kwKrAs. Macht man dies bekommt man die Fehlermeldung "kwKrAs ist kein Integerwert" (sinngemäß). Dies möchte ich aber irgendwie hinbekommen, da diese Konstanten intuitiv besser mit den Karten in Verbindung gebracht werden als ein Zahl.

Grüsse
Markus

PS: Die Komponente is noch längst nicht fertig, es werden noch Eigenschaften folgen.
PPS: Falls keine Lösung für das Problem existiert, finde ich die Idee von tigerman33 recht ansprechend, danke für die ideen...
  Mit Zitat antworten Zitat