Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Hilfe mit published property einer Liste (https://www.delphipraxis.net/191704-hilfe-mit-published-property-einer-liste.html)

iphi 12. Feb 2017 12:45

Delphi-Version: 7

Hilfe mit published property einer Liste
 
Hallo,

als Anfänger weiß ich leider nicht, nach welchem Konstrukt ich suchen muss.
Daher hier die Beschreibung, was ich erreichen möchte:
Ich möchte in einer Komponente eine published property BaudRate haben.
Der Nutzer der Komponente soll nur erlaubte Baudraten zur Auswahl haben z.B. (4800, 9600, 19200) als String oder als Integer.
Wie lege ich sowas an?

Vielen Dank für Eure Hilfe!

bernau 12. Feb 2017 13:13

AW: Hilfe mit published property einer Liste
 
Zitat:

Zitat von iphi (Beitrag 1361359)
Der Nutzer der Komponente soll nur erlaubte Baudraten zur Auswahl haben z.B. (4800, 9600, 19200) als String oder als Integer.

Bei der Property kannst du erst mal entscheiden, ob du ein Integer oder rein Aufzählungstype verwenden willst.

Beim Aufzählungstype kann der Nutzer nur deine vorgegebenen Werte verwenden:

Delphi-Quellcode:
type
  TBaudRate = (bt2400,bt4800,bt9600);


  TMyCompo = class(Tobject)
    private
    FBaudRate: TBaudRate;
    procedure SetBaudRate(const Value: TBaudRate);
    public
      Property BaudRate:TBaudRate read FBaudRate write SetBaudRate;
    end;
Oder Du verwendest Integer als Type. Dann kannst du entweder im Setter eine Exception auslösen, wenn ein Wert verwendet wird, der nicht gültig ist.

Delphi-Quellcode:
procedure TMyCompo.SetBaudRate(const Value: Integer);
begin
  if not
    (
    (value = 2400) or
    (value = 4800) or
    (value = 9600)
    ) then
    raise Exception.Create('Ungültiger Wert für die BaudRate');

  FBaudRate := Value;
end;



Oder Du setzt im Setter den naheliegensten Wert. (Beispiel: Nutzer möchte den Wert 4900 verwenden und du änderst im Setter den Wert auf den Gültigen Wert 4800.

iphi 12. Feb 2017 13:24

AW: Hilfe mit published property einer Liste
 
Super, danke! Das hilft mir weiter.

himitsu 12. Feb 2017 15:34

AW: Hilfe mit published property einer Liste
 
Und bei Integer kann man sich 'nen eigenen Property-Editor basteln, der die Auswahl als Combobox im OI anbietet,
zuzüglich zur Begrenzung im Setter.

mkinzler 12. Feb 2017 15:58

AW: Hilfe mit published property einer Liste
 
Gab es unter D7 schon Property-Editoren?

DeddyH 12. Feb 2017 17:57

AW: Hilfe mit published property einer Liste
 
AFAIK gab es Property Editoren schon unter Delphi 1. Verwechselst Du da etwas? Und zum Thema: wenn man nur genau festgelegte Werte angeben kann (wie eben bei der Baudrate) würde ich den Wert nicht als Integer definieren, sondern wie bereits erwähnt eine Aufzählung verwenden. Alles andere verwirrt doch nur.


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