Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit ComboBox (https://www.delphipraxis.net/158594-problem-mit-combobox.html)

FelixR 23. Feb 2011 13:08

Delphi-Version: 2006

Problem mit ComboBox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich programmiere zu Zeit eine Punktekreditkarte (siehe Anhang ).
Die Punktwerte soll der Benutzer in ein Stringgrid eingeben ( funktioniert auch ).
Die Fächer sollen mit Hilfe von Comboboxen ausgewählt werden (funktioniert bis dahin auch )
nun zu meinen Problem/ Frage: Wenn in der Combobox für 1.Fremdsprache zum Beispiel "Englisch" gewählt wird , soll in der Combobox für die 2. Fremdsprache und in der Combobox als zusätzliches Wahlfach Englisch nicht mehr zur Auswahl stehen
Hier wäre mein Quelltext

if ComboBox1.Text = 'Englisch' then
begin
ComboBox7.Items.Delete(ComboBox7.Items.IndexOf('En glisch'));
ComboBox9.Items.Delete(ComboBox9.Items.IndexOf('En glisch'));
end
else if …..

Das funktioniert aber leider so nicht bzw. funktioniert nicht für beide Comboboxen (für combobox 7 funktioniert es)
Ich habe Rechtschreibung überprüft und auch keine weiteren Eigenschaften der comboxen verändert.
Wäre für schnelle Hilfe dankbar
M.f.g. Felix

hans ditter 23. Feb 2011 13:15

AW: Problem mit ComboBox
 
Hi ertmal willkommne in der DP! :dp:

Bevor irgendwas anderes. Wenn du hier Delphi-Quelltext postest, dann benutzte bitte die Delphi-Tags. Das ist der kleine Helm oben mit dem roten Kranz... :D

Also, warum das nicht funktioniert wird mir nicht ganz klar. Bist du sicher dass das 'En glisch' geschrieben werden soll?
Ansonsten, veränderst du den Inhalt von Combobox 9 wo anders noch? Vielleicht hast du da was gegensätzliches geschrieben, dass Englisch entfernt aber beim nächsten Klick wieder hinzugefügt wird?

Ansonsten ncohmal ein bisschen mehr Quelltext posten.

LG; hans ditter

FelixR 23. Feb 2011 14:49

AW: Problem mit ComboBox
 
Danke für die schnelle Antwort!

Ja das soll schon 'Englisch' heißen ist aber in meinen Programm richtig geschireben:-D


Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
    if ComboBox1.Text = 'Latein' then
  begin
    ComboBox7.Items.Delete(ComboBox7.Items.IndexOf('Latein'));
    Combobox9.Items.Delete(Combobox9.Items.IndexOf('Latein'));
    end
  else if ComboBox1.Text = 'Französisch' then
  begin
    ComboBox7.Items.Delete(ComboBox7.Items.IndexOf('Französisch'));
    ComboBox9.Items.Delete(ComboBox9.Items.IndexOf('Französisch'));
   end
  else if ComboBox1.Text = 'Russisch' then
  begin
    ComboBox7.Items.Delete(ComboBox7.Items.IndexOf('Russisch'));
    ComboBox9.Items.Delete(ComboBox9.Items.IndexOf('Russisch'));
  end
  else if ComboBox1.Text = 'Englisch' then
  begin
    ComboBox7.Items.Delete(ComboBox7.Items.IndexOf('Englisch'));
    ComboBox9.Items.Delete(ComboBox9.Items.IndexOf('Englisch'));

end;
 end;
Im Moment wird sonst nichts weiter an den Comboboxen verändert.
Und wie gesagt, habe schon mehrmals die Rechtschreibung überprüft.
Hab schon einige andere Leute gefragt, die mir allerdings auch nicht helfen konnten.
(Selbst mein Informatiklehrer weiß nicht an was das liegen könnte)
L.g. Felix

stahli 23. Feb 2011 14:58

AW: Problem mit ComboBox
 
Sind bei Dir die Einrückungen auch etwas verquer? Dann würde ich das mal korrigieren (liest sich besser).

Kann Dein Problem an Groß/Kleinschreibung liegen?

Grundsätzlich kannst Du es sicher auch einkürzen:

Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ComboBox7.Items.Delete(ComboBox7.Items.IndexOf(ComboBox1.Text));
  Combobox9.Items.Delete(Combobox9.Items.IndexOf(ComboBox1.Text));
end

gb0 23. Feb 2011 16:40

AW: Problem mit ComboBox
 
Stimme Stahli voll zu - das müsste Dein Problem lösen, auch wenn ich es jetzt nicht unter D2006 getestet habe.

Ganz schnell hingetippt: Hier hast Du drei Möglichkeiten, von denen doch mindestens eine verwendbar sein müsste (die obige ist auch dabei). Drei ComboBoxen - ein Eintrag gewählt - löscht den betreffenden Eintrag aus allen drei Listen...

Delphi-Quellcode:
procedure TForm1.ComboBox1Click(Sender: TObject);
var
  choice: byte;
  ctext: string;
begin
  choice := ComboBox1.ItemIndex;
  ctext := ComboBox1.Text;
  ComboBox1.Items.Delete(choice);
  choice := ComboBox2.Items.IndexOf(ctext);
  ComboBox2.Items.Delete(choice);
  choice := ComboBox3.Items.IndexOf(ctext);
  ComboBox3.Items.Delete(choice);
end;

procedure TForm1.ComboBox2Click(Sender: TObject);
var
  ctext: string;
  choice: byte;
begin
  choice := ComboBox2.ItemIndex;
  cText := ComboBox2.Items[choice];
  ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ctext));
  ComboBox3.Items.Delete(ComboBox3.Items.IndexOf(ctext));
  ComboBox2.Items.Delete(choice);
end;

procedure TForm1.ComboBox3Click(Sender: TObject);
begin
  ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ComboBox3.Text));
  ComboBox2.Items.Delete(ComboBox2.Items.IndexOf(ComboBox3.Text));
  ComboBox3.Items.Delete(ComboBox3.Items.IndexOf(ComboBox3.Text));
end;
Es ist immer vernünftig, wann immer möglich bei ListBox und ComboBox auf die Original-Einträge zurückzugreifen. Dadurch haben kleinere oder größere Unstimmigkeiten keine Chance, Unfug zu erzeugen, selbst 'En glisch' nicht! Könnte es sein, dass in der String-Liste für eine Deiner ComboBoxen 'Englisch ' steht?

LG, Günther

Änabanäna 4. Mai 2011 16:33

AW: Problem mit ComboBox
 
Guten Tag,
ich bin Delphi Anfängerin und möchte eine ComboBox füllen mit allen Sternzeichen, sodass man sein Sternzeichen auswählt und das denn sozusagen 'eingeloggt' ist.
Meine Frage ist nun, wie fülle ich die ComboBox und wie kann man ein Item auswählen?


Hier mein Versuch :)
Code:
procedure TForm1.cb_sternzeichenChange(Sender: TObject);
begin
cb_sternzeichen.AddItem('Wassermann':String;AObject:TObject);
end;
Schon mal vielen Dank für die Hilfe!

stahli 4. Mai 2011 16:42

AW: Problem mit ComboBox
 
Du hast wohl den etwas falschen Ansatz.
Du kannst einfach zur Entwicklungszeit (also wenn Du Dein Formular aufbaust) im Objektinspektor in ComboBox.Items Deine Wasserzeichen eintragen.

Zu Laufzeit kannst Du dann ermitteln, welchen Eintrag der User gewählt hat.

nuclearping 4. Mai 2011 16:47

AW: Problem mit ComboBox
 
ComboBox.AddItem brauchst du auch nur, wenn du zu deinen Einträgen Objekte verlinken willst. Ansonsten nimm ComboBox.Items.Add. Über ComboBox.ItemIndex bekommst du den aktuell gewählten Eintrag.

DeddyH 4. Mai 2011 16:50

AW: Problem mit ComboBox
 
Übrigens darfst Du auch gerne eigene Threads erstellen und musst keine fremden kapern ;)

rollstuhlfahrer 4. Mai 2011 16:53

AW: Problem mit ComboBox
 
Bitte nicht böse sein, aber das ist wohl doch sinnvoll: Grundlagentutorial

Bernhard


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