Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Combobox, wie geht das? Delphi-Anfänger verzweifelt!


Timm3r - Di 14.09.10 17:01
Titel: Combobox, wie geht das? Delphi-Anfänger verzweifelt!
Hallo nochmal zusammen,

schon wieder ergibt sich ein Problem mit Delphi. Gestern erst wurde mir wunderbar geholfen und deshalb wende ich mich nochmal an euch. Ich möchte über eine Combobox, in der Rot, Rotgelb, Grün und Gelb stehen soll, verschiedne Bilder von Ampeln aufrufen. Was muss ich jetzt im Quelltext dieser Combobox eingeben?

Wäre echt super, wenn ihr mir das erklären könntet!

Grüße!


Moderiert von user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 14.09.2010 um 17:24


Dude566 - Di 14.09.10 17:18

Zunächst musst du wissen womit die Bilder dargestellt werden sollen, schau dir mal TImage an.


Timm3r - Di 14.09.10 18:06

Nein die Bilder darstellen, das ist ja einfach. Ich möchte nur für eine Auswahl in dieser Kombobox ein gewisses Verhalten programmieren, sodass das Bild bei Grün die grüne Ampel ist. ich weiß ImAmpelRot.visible:=false ImAmpelGruen.visible:= true aber wie trage ich überhaupt was in die Box ein?


Delete - Di 14.09.10 18:25

Wenn es nicht zur Laufzeit sein muss über den Objektinspektor. Die passende Eigenschaft solltest du selber finden. Und bei ändern der Auswahl wird das Ereignis OnChange ausgelöst.


platzwart - Di 14.09.10 18:43

Inhalt der Combobox: Items

Beim Ändern des ausgewählten Eintrags wird das OnChange-Ereignis ausgelöst. Dort kannst du wieder case benutzen...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Case ComboBox.ItemIndex of
 0begin
     foo;
    end;
// den Rest kennst du ja bereits...
end;


Timm3r - Di 14.09.10 19:02

Ja danke erst einmal für die zahlreichen Antworten.

Mein Quelltext ist jetzt dieser:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
procedure TForm1.BoxChange(Sender: TObject);
begin

Case Box.ItemIndex of
 0begin
     ImAmpelRot.visible:=true;
     ImAmpelGruen.visible:=false;
     ImAmpelRotGelb.Visible:=false;
     ImAmpelGelb.visible:=false;
    end;
  1begin
     ImAmpelRot.visible:=false;
     ImAmpelGruen.visible:=false;
     ImAmpelRotGelb.Visible:=true;
     ImAmpelGelb.visible:=false;
    end;
  2begin
     ImAmpelRot.visible:=false;
     ImAmpelGruen.visible:=true;
     ImAmpelRotGelb.Visible:=false;
     ImAmpelGelb.visible:=false;
    end;
  3begin
     ImAmpelRot.visible:=false;
     ImAmpelGruen.visible:=false;
     ImAmpelRotGelb.Visible:=false;
     ImAmpelGelb.visible:=true;
    end;

end;

end;
end.

Nur woher weiß jetzt diese Combobox welche Zahl nun gegeben ist und wie schreibe ich eine Auswahlliste für diese Combobox?

Danke im Voraus!

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


platzwart - Di 14.09.10 19:13

Die Auswahl steckt in ItemIndex. Und in die Eigenschaft Items musst du die Einträge einfügen (am besten direkt im Objektinspektor)...


dickeWade - Sa 05.03.11 18:10

Das geht aba etwas eleganter


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.BoxChange(Sender: TObject);
begin
  ImAmpelRot.visible := (Box.ItemIndex = 0);
  ImAmpelRotGelb.Visible := (Box.ItemIndex = 1);
  ImAmpelGruen.visible := (Box.ItemIndex = 2);
  ImAmpelGelb.visible := (Box.ItemIndex = 3);
end;

Gruß Tommi