![]() |
Delphi-Version: XE8
NumbersOnly bei TDateTimePicker
Hallo
Ich muss den Standardkomponent "TDateTimePicker" verwenden, doch leider habe ich das Problem, dass man auch Buchstaben und Zeichen, anstatt nur Zahlen eingeben kann. Wenn man kein akzeptables Datumformat benutzt (oder eben z.B. Buchstaben), stürzt mein Programm ab. Ich habe auch versucht, die Exception abzufangen, aber der Fehler wird immer schon vor meinem Abfangversuch geworfen. Ich suche entweder nach einer Property die sagt, dass man nur Zahlen angeben kann, oder einen Weg, die Exception früh genug abzufangen. Danke |
AW: NumbersOnly bei TDateTimePicker
Gibt es ein Beispielprogramm, mit dem man das Problem nachvollziehen kann?
|
AW: NumbersOnly bei TDateTimePicker
Delphi-Quellcode:
gruss
function IsNumeric(const s: string): Boolean;
const NUMBERS = ['0'..'9']; var i: integer; begin Result := true; for i := 1 to Length(s) do if not (CharInSet(s[i], NUMBERS)) then begin Result := false; Exit; end; end; |
AW: NumbersOnly bei TDateTimePicker
@Uwe
Für was brauchst du ein Beispielprogramm? Wenn man bei einem TDateTimePicker einen Buchstaben eingibt und Enter drückt, gibt es eine Exception. Wie ich das verhindere, war die Frage. @EWeiss Danke für die Antwort, aber herauszufinden, ob ein Zeichen eine Zahl ist oder nicht war nicht das Problem. Das Problem ist, dass die Exception zu früh geworfen wird und ich sie nicht abfangen kann. Danke für die Antworten |
AW: NumbersOnly bei TDateTimePicker
und es einfach in KeyDown abfangen?
Delphi-Quellcode:
procedure TicTrainerF.cbLegRatioKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin if (pos(keyChar,'0123456789')<=0) then begin keyChar:=#0; exit; end; end; |
AW: NumbersOnly bei TDateTimePicker
Oder einfach diese Spezifische Exception selbst abfangen (behandeln)?
|
AW: NumbersOnly bei TDateTimePicker
Oder einfach...den User nicht das Datum manuell eingeben lassen. Aus Erfahrung erleichert das das Handling. :wink: Den DateTimePicker.Date sinnvoll vorzubelegen ist natürlich Voraussetzung.
|
AW: NumbersOnly bei TDateTimePicker
Im Ereignis OnUserInput den Eingabestring prüfen und die Änderung nur erlauben, wenn ein gültiges Datum vorliegt.
PS.: Mir gelingt es nicht bei meiner Delphiversion beim TDateTimePicker was anderes als Ziffern einzugeben. Buchstaben, Sonderzeichen ... werden nicht angenommen und führen zu keinerlei Reaktion seitens der Komponente. Daher bitte Quelltext und kompilierte Version hier anhängen, so dass man das prüfen kann, eventuell liegt ein Fehler vor, der nur die von Dir genutzte Delphiversion betrifft. |
AW: NumbersOnly bei TDateTimePicker
Danke an Delphi.Narium für die erste hilfreiche Antwort.
Ich kann leider die Kompilierte Version nicht einfach so anhängen, da sie 1. viel zu gross ist und 2. nicht open-source ist. Ich nehme an, du kannst nur Ziffern eingeben, da du die Eigenschaft ParseInput nicht auf true hast. Leider muss in meinem Fall ParseInput an sein. Das mit onUserInput werde ich versuchen. Danke! PS: Ich benutze delphi XE8 |
AW: NumbersOnly bei TDateTimePicker
Zitat:
Gruß Hans |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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