Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Button erst klickbar wenn Editfelder ausgefüllt (https://www.delphipraxis.net/163040-button-erst-klickbar-wenn-editfelder-ausgefuellt.html)

Delphi_gn7 13. Sep 2011 18:48

Button erst klickbar wenn Editfelder ausgefüllt
 
Hi,

ich habe in meinem Programm eine Dialogbox mit mehreren LabelEdits und einem OK-Button. In 2 LabelEdits soll mindestens 1 Buchstabe eingetragen werden und in ein weiteres eine (genau) 4-stellige Zahl, bis OKButton.Enabled auf TRUE gesetzt wird und somit anklickbar ist. Wie realisiere ich das?

Ich habe mit den OnChange und OnKeyPress-Ereignissen des ersten LabelEdits testweise erst mal folgendes versucht:

Delphi-Quellcode:
if length(text) >= 1 then OKBtn.Enabled:=TRUE else OKBtn.Enabled:=FALSE;
,

aber anscheinend werden die Ereignisse nicht ausgelöst wenn die Backspace-Taste gedrückt wird - ich kann also zunächst einen Buchstaben ins LabelEdit eintragen und anschließend wieder löschen, ohne dass der OK-Button wieder ausgegraut wird, was aber nicht sein sollte.

s.h.a.r.k 13. Sep 2011 18:51

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Delphi-Quellcode:
procedure TForm1.LabeledEdit1Change(Sender: TObject);
begin
  btnOk.Enabled := (TLabeledEdit(Sender).Text <> '');
end;
Es gibt auch das Event OnChange, welches wohl das passende für dich sein dürfte.

Delphi_gn7 13. Sep 2011 18:55

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1124117)
Delphi-Quellcode:
procedure TForm1.LabeledEdit1Change(Sender: TObject);
begin
  btnOk.Enabled := (TLabeledEdit(Sender).Text <> '');
end;
Es gibt auch das Event OnChange, welches wohl das passende für dich sein dürfte.

das habe ich ja wie oben erwähnt auch versucht - oder ist mein Befehl einfach nur unwirksam?

s.h.a.r.k 13. Sep 2011 19:04

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Oha, habe das OnChange komplett übersehen, sorry -- Asche auf mein Haupt :oops:

Bei mir klappt mein Code im OnChange-Ereignis jedenfalls.

Btw. Hast du den Code im OnChange UND im KeyPress-Ereignis?

Delphi_gn7 13. Sep 2011 19:07

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
nein nur jeweils in einem... deiner klappt, ja, aber ich wüsste gerne wo in meiner zeile der logische fehler ist :)

s.h.a.r.k 13. Sep 2011 19:08

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Was ist denn denn text? Zeit mal die ganze Methode her.

Delphi_gn7 13. Sep 2011 19:13

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
naja text ist einfach der Parameter des LabelEdits, das was man dort einträgt

Habe auch
Delphi-Quellcode:
self.text
(also
Delphi-Quellcode:
LabelEdit1.text
) versucht, hat nichts geändert

s.h.a.r.k 13. Sep 2011 19:17

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Zeig mal bitte die komplette Methode her!

Union 13. Sep 2011 19:18

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Also folgendes funktioniert definitiv, der OnChange wird ausgelöst und der jeweilige Text des Edits in ein Label geschrieben.
Delphi-Quellcode:
procedure TForm1.LabeledEdit1Event(Sender: TObject);
begin
   label1.Caption := TLabeledEdit(Sender).Text+'|';
end;

s.h.a.r.k 13. Sep 2011 19:24

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Habe gerade nachgeschaut, und was war genau das was ich dachte... Es liegt an dem Aufruf von Text. TForm hat auch die Eigenschaft Text und genau auf diese greifst du zu. Du greifst nicht auf die LabeledEdit1.Text-Eigenschaft zu.

Delphi_gn7 13. Sep 2011 19:26

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Delphi-Quellcode:
if length(text) >= 1 then OKBtn.Enabled:=TRUE else OKBtn.Enabled:=FALSE;
ist die einzige zeile in der methode
Delphi-Quellcode:
procedure TOKBottomDlg.LabledEdit1Change
!

s.h.a.r.k 13. Sep 2011 19:41

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Und genau die ist falsch, da du auf die Text-Eigenschaft der Form zugreifst und nicht auf die der LabeledEdits. Schreib das so wie ich es gemacht habe.

Verstanden wo das Problem liegt?

Delphi_gn7 13. Sep 2011 20:03

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
aaah richtig, dann ist alles klar :)

Gut, für den einzelnen Fall ist es also klar; und wenn ich jetzt nicht nur ein LabledEdit-Feld habe sondern 2-3 weitere, deren Text bestimmte Voraussetzungen erfüllen muss? Die Form hat nämlich kein OnChange Ereignis - hier dann vielleicht OnKeyPress verwenden?

Union 13. Sep 2011 20:07

AW: Button erst klickbar wenn Editfelder ausgefüllt
 
Nein, Du weist allen LabeledEdits das selbe OnChange Ereignis zu und prüfst auch immer alles.


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