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 Anfängerfrage: Combobox-Text vergleichen (https://www.delphipraxis.net/107715-anfaengerfrage-combobox-text-vergleichen.html)

Aley123 1. Feb 2008 04:33


Anfängerfrage: Combobox-Text vergleichen
 
Hallo!

Ich habe sechs Comboboxen erstellt die alle mit Buchstaben gefüllt sind:


E
F
G
H
I
J
K
X

Jetzt möchte ich, dass, wenn in einer der Comboboxen ein Buchstabe ausgewählt wird, der ausgewählte Buchstabe in den anderen Comboboxen verschwindet.

Also wenn Combobox1.Text = A ist soll in den 5 anderen Comboboxen A verschwinden, sobald aber in Combobox1 ein anderer Buchstabe ausgewählt wird soll A in den anderen Boxen wieder verfügbar sein. Das ganze soll mit allen Comboboxen so funktionieren...

Wie lässt sich das lösen?

mkinzler 1. Feb 2008 05:35

Re: Anfängerfrage: Combobox-Text vergleichen
 
mit .IndexOf Eintrag in den anderen ComboBoxen suchen und mit .Delete löschen.

Nuclear-Ping 1. Feb 2008 05:44

Re: Anfängerfrage: Combobox-Text vergleichen
 
Och, nu hab ich schon soviel geschrieben und du schaffts immer, dass auch in einer Zeile auszudrücken, @mk. :mrgreen:

DeddyH 1. Feb 2008 07:25

Re: Anfängerfrage: Combobox-Text vergleichen
 
[OT]
Zitat:

Zitat von Nuclear-Ping
Och, nu hab ich schon soviel geschrieben und du schaffts immer, dass auch in einer Zeile auszudrücken, @mk. :mrgreen:

Das kenn ich :mrgreen: [/OT]

Aley123 1. Feb 2008 07:33

Re: Anfängerfrage: Combobox-Text vergleichen
 
Wenn ich den Buchstaben in den anderen Boxen mit .Delete lösche, ist der dann auch wieder da, sobald ich in der Combobox1 einen anderen Buchstaben auswähle?

Matze 1. Feb 2008 07:35

Re: Anfängerfrage: Combobox-Text vergleichen
 
Nein, der ist dann nicht mehr da. Du kannst, bevor du den Buchstaben entfernt, die ComboBox einfach mit dem Inhalt der 1. ComboBox füllen (meines Wissens kannst du direkt die Items zuweisen oder du hast intern eine Liste, die du zuweisen kannst).

Aley123 1. Feb 2008 07:51

Re: Anfängerfrage: Combobox-Text vergleichen
 
Also die Buchstaben sind freie Laufwerksbuchstaben, die beim Programmstart in die Comboboxen eingelesen werden. Es geht darum mehrere verschlüsselte Archive als Laufwerke einzubinden. Aber zwei Archive können nicht mit dem selben Laufwerksbuchstaben eingebunden werden. Deshalb möchte ich, dass ein Buchstabe, sobald einer in der Combobox schon ausgewählt ist in den anderen Boxen verschwindet...

Gibt es keinen Befehl der bestimmte Items nur ausblendet, und sobald ein anderes Item angewählt wird, wieder einblendet? Mit löschen und neu einlesen wird das glaub ich nichts... zumindest wüsste ich nich wie ich das genau anstellen soll... :wiejetzt:

Matze 1. Feb 2008 07:58

Re: Anfängerfrage: Combobox-Text vergleichen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Na einfach so:

Delphi-Quellcode:
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
  ComboBox2.Items := ComboBox1.Items;
  ComboBox2.Items.Delete(ComboBox2.Items.IndexOf(ComboBox1.Text));
end;
Die Demo ist im Anhang.

marabu 1. Feb 2008 08:02

Re: Anfängerfrage: Combobox-Text vergleichen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Herzlich willkommen in der Delphi-PRAXiS, Aley123.

Du hattest das Problem ursprünglich sehr abstrakt formuliert. Eine Lösung dafür habe ich dir angehängt. Da es aber konkret um Laufwerksbuchstaben geht, würde ich wahrscheinlich ganz anders vorgehen.

Freundliche Grüße

Nuclear-Ping 1. Feb 2008 09:49

Re: Anfängerfrage: Combobox-Text vergleichen
 
Wenn es sich um Laufwerksbuchstaben handelt, kannst du ein Array of Record machen.
Delphi-Quellcode:
type
  TDriveAvailable = record
                      Letter: Char;
                      Available: Boolean;
                    end;
  TDriveAvailableArray = Array of TDriveAvailable;

  // ...
  DrivesAvailable: TDriveAvailableArray;
Zu nem von dir bestimmten Zeitpunkt (FormCreate zB) füllst du das Array mit den im System verfügbaren Laufwerksbuchstaben. Wie du das machst überlasse ich dir. Das ist schonwieder ein anderes Thema. Neue Frage -> Neuer Thread. ;)

Wenn in ComboBox1 dann ein Item ausgewählt wird, stellst du den Available-Wert des entsprechenden Eintrags in dem Array auf FALSE/TRUE und baust die restlichen ComboBoxen darauf auf.


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