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 Button freigeben wenn Felder gefüllt sind? (https://www.delphipraxis.net/32992-button-freigeben-wenn-felder-gefuellt-sind.html)

Leon de Bar 31. Okt 2004 06:21


Button freigeben wenn Felder gefüllt sind?
 
Guten Morgen,

ich hoffe jeder von euch hat daran gedacht seine uhr um eine stunde ZURÜCK zustellen :zwinker:

So nun aber zu meiner Frage.

Ein Form mit mehreren TEdits und einem Button. der button soll erst aktiviert werden, wenn alle felder einen Eintrag haben. Wie setze ich das um?

Sharky 31. Okt 2004 06:33

Re: Button freigeben wenn Felder gefüllt sind?
 
Hai Leon de Bar,

am einfachsten machst Du das im .OnChange-Ereigniss der TEdits. Ich habe mal eine Beispiel in dem ich alle Edits der Form durchlaufe und prüfe ob sie ohne Inhalt sind.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  ndx : Integer;
begin
  Button1.Enabled := False;
  for ndx := 0 to ComponentCount - 1 do // Alle Komponenten der Form durchgehen
  begin
    if (Components[ndx] is TEdit) then // Handelt es sich um ein Edit?
    begin
      TEdit(Components[ndx]).Clear // Inhalt aller Edits löschen
      TEdit(Components[ndx]).OnChange := AllEditChange; // Alle Edits das selbe OnChange zuweisen.
    end;
  end;
end;

procedure TForm1.AllEditChange(Sender: TObject);
var
  ndx : Integer;
  foo : Boolean;
begin
  foo := True;
  for ndx := 0 to ComponentCount - 1 do // Alle Komponenten der Form durchgehen
  begin
    if (Components[ndx] is TEdit) then // Handelt es sich um ein Edit?
    begin
      if (TEdit(Components[ndx]).Text = '') then // Edit ist leer.
      begin
        foo := False; // Button wird deaktiviert
        Break; // Schleife verlassen
      end;
    end;
  end;
  Button1.Enabled := foo;
end;

Leon de Bar 31. Okt 2004 16:09

Re: Button freigeben wenn Felder gefüllt sind?
 
Hi Sharky,

ich habe dein skript mal übernommen. DANKE dafür. Leider funzt es nicht. er sagt mir, dass ein Simikolon oder Operator fehlt - hinter dem TEdit.

Lege ich einfach eine Procedure an für das AllEditChange an oder wie? im OI kann ich das doch nciht machen, da ist doch immer nur für ein EDIT-Feld...??? Oder... :?:

jim_raynor 31. Okt 2004 16:12

Re: Button freigeben wenn Felder gefüllt sind?
 
Delphi-Quellcode:
TEdit(Components[ndx]).Clear //...
Nach dem Clear fehlt das Semikolon.

In seiner ersten Prozedur wird doch das OnChange Ereigniss für die Editfelder festgelegt.

Robert_G 31. Okt 2004 16:14

Re: Button freigeben wenn Felder gefüllt sind?
 
Zitat:

Zitat von Leon de Bar
Hi Sharky,

ich habe dein skript mal übernommen. DANKE dafür. Leider funzt es nicht. er sagt mir, dass ein Simikolon oder Operator fehlt - hinter dem TEdit.

Eher VOR dem TEdit bzw. NACH dem Clear. ;)

Leon de Bar 31. Okt 2004 16:18

Re: Button freigeben wenn Felder gefüllt sind?
 
:wall: DANKE. Ich habe es verbessert und dann funzte es nicht. Dann habe ich es wieder weg gemacht und es funzte nicht. Nun schreibst du mir, daß ich das so machen muss und nun funzt es... :wall:

JETZT löft es wunderbar. :thumb: :thumb: :thumb:


[Edit] Peinliche Wiederholung entfernt [/Edit]

Sharky 1. Nov 2004 05:26

Re: Button freigeben wenn Felder gefüllt sind?
 
Zitat:

Zitat von Leon de Bar
...im OI kann ich das doch nciht machen, da ist doch immer nur für ein EDIT-Feld...??? Oder... :?:

Hai Leon,

mache mal ein neues Projekt auf. Plaziere doch mehrere TEdits.
Jetzt hast Du zwei möglichkeiten: Markiere alle Edits, gehe im OI auf OnChange und mache einen Doppelklick. Jetzt ist bei allen markierten Edits die selbe OnChange Methode eingetragen.

Oder: Du hast für ein TEdit schon eine OnChnage Methode geschrieben; dann kannst Du diese im OI auch noch weiteren Edits zuweisen. Dafür einfach die Methode in der ComboBox von .OnChange auswählen.

Leon de Bar 1. Nov 2004 05:30

Re: Button freigeben wenn Felder gefüllt sind?
 
KLASSE :bounce1:

Das ist einfach super dieses Board.

Dank dir Sharky.


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