Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konstantenauflistung (wie clGreen, clRed, ) selber erstellen (https://www.delphipraxis.net/33641-konstantenauflistung-wie-clgreen-clred-selber-erstellen.html)

dartrax 10. Nov 2004 16:07


Konstantenauflistung (wie clGreen, clRed, ) selber erstellen
 
Hi!

Ich möchte für eine eigene Klasse so eine Konstantenauflistung (Enumeration?) selber machen! Das Ziel ist, Eigenschaften dann mit einem solchen Typ zu deklarieren und dann dieser entweder den Konstantenname oder über einen Index zuzuweisen! Also so, wie z. B. die Eigenschaft Color eines Controls: Sie sind vom Typ TColor und es gibt Konstanten wie clBlack, clGreen, clRed u.s.w., ich kann der Eigenschaft aber auch eine Zahl zuweisen.

Ich habe es schon mit folgendem Code im type-Abschnitt probiert:
Delphi-Quellcode:
type
  TCoinTyp = (Coin10, Coin25, Coin50);
Allerdings akzeptiert Delphi es nicht, wenn ich statt Coin50 z. B. 2 auf eine TCoinTyp-deklarierte Eigenschaft zuweise.

Wie geht das?

Vielen Dank,
dartrax

sakura 10. Nov 2004 16:10

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
TColor ist nicht als Set, sondern wie folgend deklariert:
Delphi-Quellcode:
type
  PColor = ^TColor;
  TColor = -$7FFFFFFF-1..$7FFFFFFF;
  {$NODEFINE TColor}
Nur Zeile 3 ist von Interesse ;-)

Um eine Liste an Optionen zu bieten musst Du zusätzlichen einen Property-Editor schreiben, suche mal in der DP danach, wir hatten das, glaube ich, schon mal ;)

...:cat:...

dartrax 10. Nov 2004 16:22

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Hallo,
danke für die schnelle Antwort!

Ich habe jetzt "{$NODEFINE TCoinTyp}" da drunter geschrieben, aber es scheint noch nicht alles zu sein. Was muss ich denn in der Zeile darüber hinschreiben? Wo kommen die Bezeichnungen hin?

Im Objektinspektor brauche ich das aber nicht.

dartrax

sakura 10. Nov 2004 16:23

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Zitat:

Zitat von dartrax
Ich habe jetzt "{$NODEFINE TCoinTyp}" da drunter geschrieben,

Das wäre auch Zeile 4 ;-)

...:cat:...

dartrax 10. Nov 2004 16:24

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
:wall:

(ohne Worte)

dartrax

alcaeus 10. Nov 2004 16:25

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Hi dartrax,

meinst du etwa so was:

Delphi-Quellcode:
type
  TCoinTyp = 0..2;

const
  Coin10 = 0;
  Coin25 = 1;
  Coin50 = 2;
Greetz
alcaeus

dartrax 10. Nov 2004 16:36

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Ok nachdem mir wieder klar geworden ist das Auflistungen im reallife bei 1 beginnen...

... wo werden denn da die Bezeichnungen clRed usw. angegeben? Oder ist dafür dieser Property-Editor?

@alcaeus:

Im Prinzip ja, ich dachte nur, ich könnte die Konstanten in eine Liste zusammenfassen und mit der Variablendeklaration verknüpfen wie Enum in VB.

dartrax

sakura 10. Nov 2004 16:51

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Zitat:

Zitat von dartrax
Oder ist dafür dieser Property-Editor?

Genau dafür ist der dann ;-)

...:cat:...

dartrax 10. Nov 2004 16:59

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Vielen Dank für eure schnellen Antworten!

Ich werde nach alcaeuss Methode verfahren.

dartrax

Christian Seehase 10. Nov 2004 23:40

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Moin dartrax,

Zitat:

Zitat von dartrax
Allerdings akzeptiert Delphi es nicht, wenn ich statt Coin50 z. B. 2 auf eine TCoinTyp-deklarierte Eigenschaft zuweise.

Wie geht das?

mittels Typecast:

Delphi-Quellcode:
var
  MyVariable : TCoinTyp;

begin
  MyVariable := TCoinTyp(2);
...
end;

dartrax 11. Nov 2004 10:46

Re: Konstantenauflistung (wie clGreen, clRed, ) selber erste
 
Hallo Christian,
Vielen Dank für deinen Tipp, so geht es nun endlich wie erwartet! Hatte das auch mal ausprobiert, allerdings Int() statt Integer() beim umgekehrten Typecast verwendet...+

dartrax


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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