Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Button erst aktivieren, wenn Editfelder Werte enthalten


fritz_07 - Sa 09.07.16 14:51
Titel: Button erst aktivieren, wenn Editfelder Werte enthalten
Hallo an alle,

ich habe folgende Aufgabenstellung:

Im Formular befinden sich zwei Editfelder, eine ComboBox und ein Button.
1x LabeledEdit
1x JvDirectoryEdit
1x ComboBox

Der Button soll erst aktiv (enabled) sein,wenn alle 3 Felder Werte enthalten.
Bei JvDirectoryEdit habe ich es mal so ausprobiert:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.JvDirectoryEdit1Change(Sender: TObject);
var pfad : String;
begin
   pfad := JvDirectoryEdit.Directory;
   if pfad = '' then
     Button3.Enabled := false
   else
     Button3.Enabled := true;

end;


Soweit funktioniert alles.

Wenn ich das jetzt für jedes Feld seperat so mache,bekomme ich eine Art Oderverknüpfung.
Benötigen tue ich aber ein Undverküpfung.
Wie kann ich dies in eine Prozedur schreiben???

Gruß fritz


Mathematiker - Sa 09.07.16 15:08


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.JvDirectoryEdit1Change(Sender: TObject);
begin
  button3.Enabled := (JvDirectoryEdit1.Directory <> ''and (LabeledEdit1.Text <> ''
                      and (Combobox1.items.index >= 0);
end;

und die JVDirectoryEdit1Change auch bei LabeledEdit1 und der Combobox1 eintragen.

Beste Grüße
Mathematiker


jfheins - Sa 09.07.16 15:08

Schreib dir eine Funktion, die entsprechend zu den Eingabefeldern je einen Parameter hat.
Sowas wie "IsValidInputComposition(a, b, c)". Und dann einfach in allen drei Eventhandlern

Delphi-Quelltext
1:
2:
3:
pfad := JvDirectoryEdit.Directory;
name := JvLabeledEdit.Text;
Button3.Enabled := IsValidInputComposition(pfad, name, ...);


Dann kannst du in der Funktion beliebig viele Sachen abprüfen und hast in den Evewnthandlern schönen, sprechenden Code.


Delete - Sa 09.07.16 15:23

- Nachträglich durch die Entwickler-Ecke gelöscht -


fritz_07 - Mo 11.07.16 21:39

Hallo,

vielen Dank für die guten Vorschläge.
Das mit der eigenen Funktion und der TActionList werde ich mal ausprobieren.

Gruß fritz