Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zusammenfassen, Verbessern von vielen IF-Schleifen (https://www.delphipraxis.net/80699-zusammenfassen-verbessern-von-vielen-if-schleifen.html)

RWarnecke 13. Nov 2006 21:45


Zusammenfassen, Verbessern von vielen IF-Schleifen
 
Hallo,

ich habe den folgenden Sourcecode :
Delphi-Quellcode:
  if Length(Edt_Username.Text) = 0 then
  begin
    Edt_Username.Color := clRed;
    Edt_Username.Font.Color := clWhite;
  end
  else
  begin
    Edt_Username.Color := clWindow;
    Edt_Username.Font.Color := clWindowText;
  end;
  if Length(Edt_UserID.Text) = 0 then
  begin
    Edt_UserID.Color := clRed;
    Edt_UserID.Font.Color := clWhite;
  end
  else
  begin
    Edt_UserID.Color := clWindow;
    Edt_UserID.Font.Color := clWindowText;
  end;
  if Length(Edt_Abteilung.Text) = 0 then
  begin
    Edt_Abteilung.Color := clRed;
    Edt_Abteilung.Font.Color := clWhite;
  end
  else
  begin
    Edt_Abteilung.Color := clWindow;
    Edt_Abteilung.Font.Color := clWindowText;
  end;
  if Length(Edt_Room.Text) = 0 then
  begin
    Edt_Room.Color := clRed;
    Edt_Room.Font.Color := clWhite;
  end
  else
  begin
    Edt_Room.Color := clWindow;
    Edt_Room.Font.Color := clWindowText;
  end;
  if Length(CB_Mandant.Text) = 0 then
  begin
    CB_Mandant.Color := clRed;
    CB_Mandant.Font.Color := clWhite;
  end
  else
  begin
    CB_Mandant.Color := clWindow;
    CB_Mandant.Font.Color := clWindowText;
  end;
Die ganzen Komponenten sind auf unterschiedlichen TabSheets auf einem PageControl. Kann ich diese Abfragen in irgendeiner Weise zusammenfassen ? Wenn ja, wie mache ich das am besten ?

mkinzler 13. Nov 2006 21:47

Re: Zusammenfassen, Verbessern von vielen IF-Schleifen
 
Du könntest sie in eine Funktion auslagern, welchr du dann mit dem Edit als Parameter aufrufst.

Muetze1 13. Nov 2006 21:51

Re: Zusammenfassen, Verbessern von vielen IF-Schleifen
 
Ansonsten hatten wir schonmal festgestellt, dass ein Vergleich auf einen leeren String schneller sein sollte als die Länge des Strings zu ermitteln und den auf 0 zu vergleichen.

Und nochwas: IF Bedingungenen/Verzweigungen sind keine Schleifen...

RWarnecke 13. Nov 2006 23:02

Re: Zusammenfassen, Verbessern von vielen IF-Schleifen
 
Zitat:

Zitat von Muetze1
Ansonsten hatten wir schonmal festgestellt, dass ein Vergleich auf einen leeren String schneller sein sollte als die Länge des Strings zu ermitteln und den auf 0 zu vergleichen.

Werde ich machen. Danke für den Tipp. :thumb:

Zitat:

Zitat von Muetze1
Und nochwas: IF Bedingungenen/Verzweigungen sind keine Schleifen...

Ja, Du hast Recht. Habe ich falsch geschrieben. :wall:


Zitat:

Zitat von mkinzler
Du könntest sie in eine Funktion auslagern, welchr du dann mit dem Edit als Parameter aufrufst.

Du meinst das doch bestimmt so oder ?
Delphi-Quellcode:
procedure CheckEdit(Pflicht : TEdit);
begin
  If Pfilcht.Text = '' then
  begin
    Pflicht.Color := clRed;
    Pflicht.Font.Color := clWhite;
  end
  else
  begin
    Pflicht.Color := clWindow;
    Pflicht.Font.Color := clWindowText;
  end;
end;

.
.
.
CheckEdit(Edt_Username);
CheckEdit(Edt_UserID);
u.s.w.
.
.
.
Ich hatte da eigentlich irgendwie an eine FOR-Schleife gedacht. Geht das überhaupt ?

TBx 13. Nov 2006 23:32

Re: Zusammenfassen, Verbessern von vielen IF-Schleifen
 
Zitat:

Zitat von RWarnecke
Ich hatte da eigentlich irgendwie an eine FOR-Schleife gedacht. Geht das überhaupt ?

ja, denn:

Zitat:

Zitat von RWarnecke
Die ganzen Komponenten sind auf unterschiedlichen TabSheets auf einem PageControl.

Du kannst nun die Components der Form durchgehen und gucken, ob es sich um ein TEdit handelt, wenn ja, übergibst Du es Deiner procedure.
Wenn nicht alle TEdits, die auf Deinem Form liegen, überprüft werden sollen, so kannst Du diese dann über den Komponentennamen, das Tag, den Parent oder auch den Parent des Parents (--> das PageControl) weiter einschränken.

Hoffe, das hilft Dir als Denkanstoss weiter.
Gruß

onlinekater

hoika 14. Nov 2006 07:10

Re: Zusammenfassen, Verbessern von vielen IF-Schleifen
 
Hallo,

du kannst auch einen eigene Komponente (von TEdit abgeleitet) bauen,
und packt den Code dort rein ins OnChange (?).

Zur Schleife:
Components enthält alle Komponenten des Forms (beginnend bei 0 !)
ComponentCount die Anzahl
if (Component is TEdit) wäre das if

Den Schleifencode solltest du damit wohl selber hinbekommen.


Heiko


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