Autor Beitrag
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 17.07.02 20:28 
Ich habe eine Variable eines Mengentyps. Nun möchte ich gerne diese Variable aus einer Combobox heraus setzen. Wie mach ich das am einfachsten?

Hier mal der Code.
Die Strings in der ModeBox heisen natürlich auch Rot, Gruen,... wobei es auch nett wäre diese Einträge aus der Menge heraus zu füllen.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
type
  TMode = (Rot, Gruen, Blau, Gelb, Weiss, Schwarz);
  TForm1 = class(TForm)
    ModeBox: TComboBox;
    procedure ModeBoxChange(Sender: TObject);
    ...
  public
    Mode : TMode;
  end;  

var
  Form1: TForm1;

implementation

procedure TForm1.ModeBoxChange(Sender: TObject);
begin
  // hier soll nun je nach Auswahl der Wert von Mode geändert werden
end;

end.

Eventuell bin ich auch total auf dem Holzweg und es gibt eine viel einfachere Lösung. Ich will das ganze später vielleicht mal in eine Komponente einbauen, wobei Mode dann eine Eigenschaft werden soll.

Ich hab diese Art der Menge übrigends aus einer Komponente. Kenn mich aber mit Mengen selber nicht so gut aus :oops:
Kommt nämlich gleich die nächste Frage, wie ich den Wert von Mode in einer If oder Case verwende... :oops: :oops:

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
DaSurv
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 18.07.02 03:49 
Ich hab´s nicht ganz verstanden, aber ich biete dir halt mal einen Alternativvorschlag:

Ich habe Die Farben vorher als Items in die ComboBox eingetragen und habe Farbe zu einer Eigenschaft von deiner Klasse TMode gemacht.
(Du kannst ja später die vordefinierten Farben aus einer Datei, zum Beispiel farben.ini in die ComboBox einlesen!). Also nun meine Vorstellung:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
type
  TMode = class
    Farbe: String;

...

var
  Form1: TForm1;
  Mode: TMode;

...

procedure TForm1.ModeBoxChange(Sender: TObject);
begin
  Mode := TMode.Create;
  Mode.Farbe := ModeBox.Text;
end;

P.S. Wenn du nicht willst, dass der Benutzer selber Werte in die ComboBox eintragen kann, dann kannst du ja die Eigenschaft Style, der ComboBox auf csDropDownList setzen!!!

DaSurv

Code-Tags hinzugefügt. Tino
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 18.07.02 09:18 
Hallo,

1. Ich sehe in deinem Code keinen Mengentyp, daher gehe ich davon aus, du meinst den Aufzählungstyp tMode.

2. Besonders einfach wird das dann, wenn du sicherstellen kannst, das die Reihenfolge und Anzahl, in der Liste der Combobox, die selbe ist wie im Typen. Dann kannst du das nämlich so machen:
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure TForm1.ModeBoxChange(Sender: TObject);
begin
  IF ModeBox.ItemIndex > -1 THEN
    Mode := tMode(ModeBox.ItemIndex);
end;


Gruß
Klabautermann