Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Combobox Teil 2 (https://www.delphipraxis.net/86229-combobox-teil-2-a.html)

LA_18 11. Feb 2007 12:14


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 ^^

mkinzler 11. Feb 2007 12:22

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:

Helft mir mal bitte, is meine letzte Frage !!
Du kannst so viele Fragen stellen, wie du willst, aber immer eine auf einmal.

glkgereon 11. Feb 2007 12:24

Re: Combobox Teil 2
 
Nun der Inhalt der Combobox ist ein Objekt TStrings...

Mit
Delphi-Quellcode:
Strings[ItemIndex]
findest du den Aktuell selektieren Eintrag heraus.
Wenn ItemIndex -1 ist ist nichts ausgewählt.

um in einem anderen TStrings die ID rauszufinden:
Delphi-Quellcode:
Strings2.IndexOf('ABC')
und um etwas zu löschen
Delphi-Quellcode:
Strings.Delete(MeineID)
Das ganze jetzt noch im OnChange aufrufen und richtig zusammenbauen und schon gehts ;-)


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);
;-)

DGL-luke 11. Feb 2007 12:27

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:
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;
//roterkasten
hier mal n kompletter Code ;-)

Luckie 11. Feb 2007 13:45

aussagekräftiger Titel
 
Bitte gib deinem Thread einen aussagekräftigen Titel. Unter "Combobox Teil 2" kann sich wohl nieman detwas so ricgtig vorstellen. Danke.

LA_18 11. Feb 2007 17:51

Re: Combobox Teil 2
 
Ich weiß nicht, wo ich das bsp hinschreiben soll...

muss ich da auf die combobox gehen ??

DGL-luke 11. Feb 2007 18:01

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:
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;
Ohne die zwei zusätzlichen Zeilen werden die Auswhlmöglichkeiten nämlcih immer weniger :pale:

LA_18 11. Feb 2007 18:14

Re: Combobox Teil 2
 
oki doki.. ich probier es mal aus !! Fette Grüße und Danke


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