Zitat von
traudl:
Hallo DPler ich hab folgendes Problem ich habe eine procedure geschrieben bei der bei Falscheingabe der Focus behalten wird.
Das würde ich nicht so machen.
Der Benutzer wird dadurch in seinen Möglichkeiten viel zu stark eingeschränkt.
Beispiel:
er möchte ein Formular mit 10 Felder mit Daten bestücken.
Einige Daten kopiert er sich mit Copy&Paste aus einem Excel Dokument.
Er klickt aus Versehen nun in Feld Nummer 8 und kommt nicht mehr raus,
weil er keine Ahnung hat, wie ein korrekter "Warehouse code" aussehen muss.
Ziemlich blöd; ohne KeepFocus könnte er die anderen Felder ausfüllen,
einen Screenshot machen und irgendjemand (dich) um Hilfe bitten.
Korrekte Vorgehensweise wäre:
Erst wenn der Benutzer einen Button, Menupunkt (oder allgemein eine Action) auslöst,
werden die Dateneingaben überprüft.
Delphi-Quellcode:
procedure TForm1.CheckUserData;
begin
if Edit1.Text = '
'
then
begin
Edit1.SetFocus;
raise Exception.Create('
Seriennummmer fehlt!');
end
else if not IsNumericControl(Edit2)
then
begin
Edit2.SetFocus;
raise Exception.Create("Anzahl falsch/fehlt!'
);
end;
end;
Bei speziellen Eingabe hilft TMaskEdit, TDateTimePicker oder ähnlich spezialisierte Controls.