Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Doppelte Einträge in 5 ComboBoxen herausfinden ? (https://www.delphipraxis.net/105033-doppelte-eintraege-5-comboboxen-herausfinden.html)

MaBuSE 14. Dez 2007 13:09

Re: Doppelte Einträge in 5 ComboBoxen herausfinden ?
 
Zitat:

Zitat von Die Muhkuh
wenn Du z.B. den Text einer ComboBox abfragen willst, könntest Du es z.B. so machen:

Ok Du warst schneller :-)
Aber was macht Du wenn er 7 Comboboxen auf dem Form hat, aber nur 5 Testen will?
In dem Fall ist das mit dem direkten Zuweisen einfacher. ;-)

Mann kann das auch in eine Funktion packen so was wie:
Delphi-Quellcode:
...
function CheckComboBoxes(const a: array of TComboBox): Boolean;
var i, j: Integer;
begin
  Result := True;
  for i := 0 to High(a) do
    if a[i].ItemIndex > -1 then
      for j := i + 1 to High(a) do
      begin
        Result := Result and (a[i].ItemIndex <> a[j].ItemIndex);
      end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if CheckComboBoxes([ComboBox1, ComboBox2, ComboBox3])
    then Caption := 'OK'
    else Caption := 'NOT OK';
end;
...
Damit ist man flexibel, da mann beliebig viele Comboboxen angeben kann.
Ich hoffe das hilft Dir weiter ;-)

Die Muhkuh 14. Dez 2007 13:12

Re: Doppelte Einträge in 5 ComboBoxen herausfinden ?
 
Hi MaBuSe,

da hast Du natürlich recht. Wenn ich jetzt Deine Lösung mit dem Array sehe, ist es imho die beste Lösung. ;-)

HolgerCW 14. Dez 2007 13:16

Re: Doppelte Einträge in 5 ComboBoxen herausfinden ?
 
Astrein.

Vielen dank für all die Lösungen.

Gruss

Holger

MaBuSE 14. Dez 2007 13:17

Re: Doppelte Einträge in 5 ComboBoxen herausfinden ?
 
Zitat:

Zitat von HolgerCW
Delphi-Quellcode:
...
 For I := 1 to 5 do
 begin
  For T := 1 to 5 do
  begin
...

Du macht unnötig viele Vergleiche.

i = 1 und t = 2 gibt immer das selbe Ergebnis wie i = 2 und t = 1


Ich habe meine Funktion von ItemIndex auf Text Vergleich umgestellt, da es Dir wohl sympatischer ist ;-)

(Durch das [i]Result := Result and (a.Text <> a[j].Text); wird übrigens bei Result := False kein Vergleich mehr durchgeführt, da der Compiler das wegoptimiert.)

Delphi-Quellcode:
...
function CheckComboBoxes(const a: array of TComboBox): Boolean;
var i, j: Integer;
begin
  Result := True;
  for i := 0 to High(a) do
    if a[i].Text <> '' then
      for j := i + 1 to High(a) do
      begin
        Result := Result and (a[i].Text <> a[j].Text);
      end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if CheckComboBoxes([ComboBox1, ComboBox2, ComboBox3])
    then Caption := 'OK'
    else Caption := 'Ein Auftragstyp ist doppelt vorhanden';
end;
...

Die Muhkuh 14. Dez 2007 13:18

Re: Doppelte Einträge in 5 ComboBoxen herausfinden ?
 
Hi,

man könnte das ganze jetzt noch weitgehend "verbessern" und den Index der ComboBoxen zurückgeben, in denen das gleiche ausgewählt ist. ;-)

HolgerCW 14. Dez 2007 13:34

Re: Doppelte Einträge in 5 ComboBoxen herausfinden ?
 
Super,

danke werde es umsetzen.

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
Seite 2 von 2     12   

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