Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Umgang mit ComboBox (https://www.delphipraxis.net/98335-umgang-mit-combobox.html)

MarquiseDeSade 25. Aug 2007 12:18


Umgang mit ComboBox
 
Hallo Delphianer :-D

Ich programmiere derzeit an einem Quiz und meine Kenntnisse reichen mal wieder nicht aus :?

Also, folgendes Problem...

Ich habe einen Array für die 16 Bundesländer von Deutschland, und die Länder werden per Zufallsgenerator ausgegeben.

Delphi-Quellcode:
procedure TForm1.Laenderauswahl;
begin
  Randomize;
  //Alle 16 Bundesländer
  Laender[0] := 'Baden-Württemberg';
  Laender[1] := 'Bayern';
  Laender[2] := 'Saarland';
  Laender[3] := 'Rheinland-Pfalz';
  Laender[4] := 'Hessen';
  Laender[5] := 'Thüringen';
  Laender[6] := 'Sachsen';
  Laender[7] := 'Nordrhein-Westfalen';
  Laender[8] := 'Niedersachsen';
  Laender[9] := 'Sachsen-Anhalt';
  Laender[10] := 'Brandenburg';
  Laender[11] := 'Berlin';
  Laender[12] := 'Bremen';
  Laender[13] := 'Hamburg';
  Laender[14] := 'Schleswig-Holstein';
  Laender[15] := 'Mecklenburg-Vorpommern';
  Land := Random(16);
  Panel3.Caption := ' ' + Laender[Land];
end;
Die Variable Land hat also einen Wert von 0 bis 15 und diesen möchte ich in Verbindung einer Combobox nutzen. In dieser Combobox sind die Werte(Items) von 0-15 den Bundesländern mit der jeweils richtigen Stadt zugeordnet.
Bsp:
Laender[1] beinhaltet Bayern und in der Combobox ist bei Item 1 München....

Nun möchte ich dem Benutzer helfen, sobald er zwei mal hintereinander die falsche Stadt über die Combobox ausgewählt hat, indem ich ihm die richtige Antwort auf einem Panel ausgebe. Wie stelle ich nun eine Verbindung zwischen der Variable "Land", welche ja den Integer 0-15 beinhaltet, zur richtigen Stadt in der Combobox her ?

Delphi-Quellcode:
panel4.Caption:='Die gesuchte Stadt war '+ComboBox1.........???
Ich hoffe ihr versteht was ich meine, wenn nicht einfach nochmal fragen...

gruß Tobias :-D

s-off 25. Aug 2007 12:32

Re: Umgang mit ComboBox
 
Hallo,
Delphi-Quellcode:
ComboBox1.Items.Strings[x]
Ich weiss nicht, ob ich Dich richtig verstanden habe, wenn nicht -> einfach nochmal fragen :mrgreen:

Edit: x ist natürlich der Index des korrekten Landes aus Deinem Array bzw. der Wert Deiner Variablen 'Land'

Edit2: Aber warum übergibst Du ihm denn nicht einfach gleich als Lösung den entsprchenden Wert Deines Arrays?

MarquiseDeSade 25. Aug 2007 13:48

Re: Umgang mit ComboBox
 
Zitat:

Zitat von s-off
Edit2: Aber warum übergibst Du ihm denn nicht einfach gleich als Lösung den entsprchenden Wert Deines Arrays?

Mh, weil doch im Array nur die Bundesländer sind, der User aber die richtige Hauptstadt nennen soll, oder meintest du was anderes ??
Bin offen für eine Vereinfachung meines Problems ... :)

Auf jeden Fall funktioniert
Delphi-Quellcode:
ComboBox1.Items.Strings[x]
Danke dafür :P

gruß Tobias

s-off 25. Aug 2007 14:24

Re: Umgang mit ComboBox
 
Zitat:

Zitat von MarquiseDeSade
Zitat:

Zitat von s-off
Edit2: Aber warum übergibst Du ihm denn nicht einfach gleich als Lösung den entsprchenden Wert Deines Arrays?

Mh, weil doch im Array nur die Bundesländer sind, der User aber die richtige Hauptstadt nennen soll, oder meintest du was anderes ??

Äm, ja, natürlich, sorry - mein Fehler.

Du könntest natürlich ein zweidimensionales Array basteln, in welchem Du sowohl das Bundesland, als auch die dazu gehörige Landeshauptstadt speicherst.

Anschliessend könntest Du Deine Combobox mit den Werten aus Deinem Array füllen. Das hätte den Vorteil, dass Du nur Dein Array erweitern müsstest, wenn wir dann irgendwann mal..... ach, das war ein anderes Thema :mrgreen:

Jedenfalls müsstest Du die grundlegenden Daten dann nur in Deinem Array pflegen, und nicht zusätzlich noch in der Combobox.

Aber für eine exaktere Aussage kenne ich Deine Struktur zu wenig.

DeddyH 25. Aug 2007 16:14

Re: Umgang mit ComboBox
 
Ich würde die Bundesländer und ihre Hauptstädte in einem Record speichern (dafür eine Klasse zu bauen, halte ich für übertrieben). Etwa so (ungetestet, da kein Delphi zur Hand):
Delphi-Quellcode:
type TLand = record
  Name,
  Hauptstadt: string;
end;

var Laender: array[0..15] of TLand; //nur als Beispiel, ein privates Feld des Formulars wäre besser
...

procedure InitLaender;
begin
  Laender[0].Name := 'Bayern';
  Laender[0].Hauptstadt := 'München';
  Laender[1].Name := 'Schleswig-Holstein';
  Laender[1].Hauptstadt := 'Kiel';
  ...
end;

...

procedure Antwort;
begin
  ShowMessage(Laender[x].Hauptstadt; //x ist der ermittelte Zufallswert
end;
//Edit: Rächtschraipfeeler berrichticht


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