![]() |
Focus setzen
In mehreren Edit-Feldern sollen nur Zahlen kleiner als 15 eingegeben werden dürfen.
Wird im ersten Edit-Feld nun eine Zahl über 15 eingegeben, so soll eine Fehlermeldung erscheinen. Soweit so gut. Nun soll aber natürlich der Focus auf eben dieses Edit-Feld gelegt werden. Mein bisherige Quelltext sieht folgendermaßen aus:
Delphi-Quellcode:
Die Edit-Felder sind durch eine Variable abgebildet. Dies soll auch nicht geändert werden. Da mir sonst der Quelltext zu lang werden würde.
procedure TStunden.StdExit(Sender: TObject);
var Tmp: TEdit; Edit : String; begin // keine Angabe über 15 Stunden möglich Tmp:= Sender As TEdit; Edit := Tmp.Text; begin if Edit <> '' then begin if strtoint(Edit) > 15 then begin showmessage('Bitte nur Stundenangaben im Bereich {0,0 ... 15,0}'); // hier Edit.SetFocus funktioniert nicht ModalResult := 0; exit; end; end; end; end; Kann mir wer helfen? Es geht also nur darum, dass eben der Cursor bei Falscheingabe wieder auf das "falsche" Feld gesetzt wird. Vielen Dank im Voraus. |
Re: Focus setzen
Hallo. In diesem Fall könntest du mit Tmp.SetFocus dem Edit seinen Focus zurückgeben. Oder hattest du etwas anderes gemeint?
Wenn ja, dann frag einfach nochmal :wink: Man liest sich, Stanlay :hi: |
Re: Focus setzen
Moin Micha,
bei Deinem Code müsste das schlicht
Delphi-Quellcode:
heissen.
Tmp.SetFocus;
|
Re: Focus setzen
Moin Micha,
Zitat:
Mir für meinen Teil gefallen solche Meldungen nicht sonderlich ;-) @Stanlay: Vordrängler :mrgreen: |
Re: Focus setzen
@Christian
1. Hast du natürlich recht, dass man das verhindern sollte. Allerdings könnte es dann theoretisch sein, dass der Anwender nicht weiß, wie viel er eingeben darf und dann "e[delphi]ig" vor dem Edit hockt und probiert. Wenn dann sollte man vielleicht noch zusätzlich einen Hinweis in einer Statusbar oder so anzeigen, wo drin steht, dass man nicht mehr als 15,0 eingeben darf. 2. :tongue: (=> Vordrängler) Man liest sich, Stanlay :hi: |
Re: Focus setzen
1. Ja, ich habe das mit "tmp.SetFocus" gemeint.
Ich habs die ganze Zeit mit "Edit.SetFocus" probiert. Optimal. 2. @christian: Wie stelle ich das mit dem Verhindern an? Geht das auch ohne MaskEdit? |
Re: Focus setzen
Hi. Ich bin zwar nicht Christian...:wink: aber im OnChange des/eines Edits einfach eingeben: IF StrToInt(Tmp.Text) > 15 THEN Tmp.Text := ''.
Das löscht bei einer falschen Eingabe den Inhalt des Edits. Man liest sich, Stanlay :hi: |
Re: Focus setzen
Moin Micha,
MaskEdit hab' ich noch nie verwendet ;-) Im OnKeyDown/OnKeyUp/OnKeyPress kannst Du auf gültige Zeichen prüfen, und ungültige löschen (hatten wir schon öfter). Ausserdem könntest Du da dann, bei gültigem Zeichen, auch gleich prüfen, ob der Wert noch korrekt ist. Sinnvoll wäre auch eine Prüfung im OnChange, da ja jemand die Daten auch per Copy & Paste einfügen könnte. Was, wie Stanlay ja schon sagte, auf jeden Fall sein muss, ist ein Hinweis (z.B. StatusBar, Label zum Edit) in dem der zulässige Wertebereich angezeigt wird. |
Re: Focus setzen
Erstmal sorry an Stanlay Hanks.
Dann ein rießen Dank an alle, die meine Frage(n) beantwortet haben. Echt super. Danke, ihr habt mir sehr geholfen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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 by Thomas Breitkreuz