![]() |
Combobox Teil 2
Also nun unter neuen Thread meine 2. Frage !!
Meine Frage: Wenn ich 2 Comboboxen hab, mit dem gleichen Inhalt, wie kann ich es programmieren, das wenn ich in der 1. box etwas ausgewählt hab, dass das in der 2 box dann nicht mehr zur auswahl steht ! Ihr habt ja nun schon beschrieben, ich muss es irgendwie löschen, aber wie programmiere ich denn den ganzen ablauf bei Delphi dass das funktioniert !! Helft mir mal bitte, is meine letzte Frage !! Danke schon mal im Vorraus !! MfG ^^ |
Re: Combobox Teil 2
Es gibt keinen Befehl, der dies kann, du mußt wie schon erwähnt, den ausgewählen Eintrag der 1. ComboBox (ComboBox1.Text) in der 2. suchen (.IndexOf()) und dann Löschen (.Delete).
Zitat:
|
Re: Combobox Teil 2
Nun der Inhalt der Combobox ist ein Objekt TStrings...
Mit
Delphi-Quellcode:
findest du den Aktuell selektieren Eintrag heraus.
Strings[ItemIndex]
Wenn ItemIndex -1 ist ist nichts ausgewählt. um in einem anderen TStrings die ID rauszufinden:
Delphi-Quellcode:
und um etwas zu löschen
Strings2.IndexOf('ABC')
Delphi-Quellcode:
Das ganze jetzt noch im OnChange aufrufen und richtig zusammenbauen und schon gehts ;-)
Strings.Delete(MeineID)
PS: Kleiner Tipp: So sollte immer, wenn die Erste Combobox geändert wird die Zweite wieder voll gefüllt werden. Sonst wird nach und nach ein Item nach dem anderen rausgelöscht....
Delphi-Quellcode:
;-)
Strings.Assign(Strings2);
|
Re: Combobox Teil 2
Hallo, das ist gar nicht so einfach. Wenn du direkt die Strings vergleichst isses zwar n bisschen langsamer, funktioniert aber zuverlässig:
Delphi-Quellcode:
//roterkasten
var
CBText: string; //da muss die komplette Liste rein CBs: array[0..1] of TComboBox; //da müssen beide Comboboxes rein, jeweisl mit entsprechend gesetztem Tag procedure TForm1.CbCloseUp(Sender: TObject); var ThisCB, OtherCB: TComboBox; begin ThisCB := Sender as TComboBox; OtherCB := CBs[(ThisCB.Tag + 1) mod 2]; OtherCB.Items.Delete(ThisCB.Text); //könnte auch Remove sein... halt das, wo man einen String reinpackt. end; hier mal n kompletter Code ;-) |
aussagekräftiger Titel
Bitte gib deinem Thread einen aussagekräftigen Titel. Unter "Combobox Teil 2" kann sich wohl nieman detwas so ricgtig vorstellen. Danke.
|
Re: Combobox Teil 2
Ich weiß nicht, wo ich das bsp hinschreiben soll...
muss ich da auf die combobox gehen ?? |
Re: Combobox Teil 2
Das unter dem "var" muss entweder als globale Variable definiert werden (dahin, wo auch "Form1: TForm1" steht) oder als private member in die Form (dahin, wo "{Private-Deklarationen}" steht).
Die Prozedur muss als Ereignisbehandlung für die OnCloseUp oder OnChange (dann aber zusätzlich auf ItemIndex > -1 prüfen) Ereignisse beider Comboboxen eingestellt werden. Dafür am besten zu einer COmbobox gehen, im OI (F11) auf "Ereignisse", auf "OnCloseUp" doppeklicken und den Programmcode reinkopieren, bei der zweiten Combobox das selbe Ereignis diesmal auswählen. Wobei mein Code noch nciht perfekt ist:
Delphi-Quellcode:
Ohne die zwei zusätzlichen Zeilen werden die Auswhlmöglichkeiten nämlcih immer weniger :pale:
var
CBText: string; //da muss die komplette Liste rein CBs: array[0..1] of TComboBox; //da müssen beide Comboboxes rein, jeweisl mit entsprechend gesetztem Tag procedure TForm1.CbCloseUp(Sender: TObject); var ThisCB, OtherCB: TComboBox; begin ThisCB := Sender as TComboBox; OtherCB := CBs[(ThisCB.Tag + 1) mod 2]; ThisCB.Items.Text := CBText; OtherCB.Text := CBText; OtherCB.Items.Delete(ThisCB.Text); //könnte auch Remove sein... halt das, wo man einen String reinpackt. end; |
Re: Combobox Teil 2
oki doki.. ich probier es mal aus !! Fette Grüße und Danke
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz