先程「時間の計算方法は?」で質問したえみです。
「解決」としてしまいましたが、もう1点聞きたいことがありますので、
新規スレッドを立てます。
時間の計算方法は出来たのですが、今度は入力制限について教えてください。
入力する時に「__:__」というように「時間:分」のフォーマットでしか
入力出来ないようにしようと思います。
MaskEditに使用して、EditMaskプロパティで「ShortTime」を選択しました。
(ShortTimeはマスクファイルでus.demを読み込んで選択しました)
これで入力は出来るようになりました。
そこで、MaskEditからフォーカスが外れた時に入力値チェックを行おうと思います。
OnExitイベントに以下の処理を追加しました。
var
StartTime : TTime;
begin
try
if MaskEdit1.Text <> ' : ' then
StartTime := StrToTime(MaskEdit1.Text);
except
ShowMessage(MaskEdit1.Text + 'はエラーです');
MaskEdit1.SetFocus;
Exit;
end;
end;
このようにすると、例えば「27:00」と入力するとエラーメッセージが表示されます。
そして入力値を全て削除すると、フォーカスが外れた時に
「入力値が不正です。エスケープキーで変更を取り消せます」の
メッセージが表示されてしまいました。
仕方なく正しい値「22:00」を入力するとエラーも表示されなくなります。
この状態で再度入力値を削除すると、エスケープキーのエラーが表示されてしまいます。
このエスケープキーのエラーが出ないようにするにはどうしたらいいですか?
教えてください。
えみさん、こんにちは。
おかしいですね。これで動きます。
空白時のエラーは当方では出ません。
EditMaskのOnExitに設定しました。
おはようございます。
もう1度試してみましたが、やはりエラーとなってしまいます。
私の手順を以下に記述しますので、同じか確認していただけますか?
EditMaskのOnExitイベントに追加すると
procedure TForm1.MaskEdit1Exit(Sender: TObject);
という関数が作成されるので、投稿したロジックを追加しました。
実行直後に何も入力せずにMaskEdit1からフォーカスが外れた場合はエラーは出ません。
次に「27:00」と入力すると「27:00はエラーです」とメッセージが表示されます。
OKボタンをクリックして、Deleteキーで入力した文字を全て削除して、
MaskEdit1からフォーカスが外れるとエスケープキーのエラーが表示されます。
ちなみに、EditMaskプロパティをShortTimeに設定した時に
「文字列に保存」にチェックが設定されています。
これは関係しそうですか?
もし私と手順が違うようでしたら、手順を教えてください。
よろしくお願いします。
えみさん、こんにちは。
EditMaskを'90:00;1;_'にするとエラーになるようです。
'99:99;1;_'にしてみて下さい。
EditMaskを変更したらエラーが出なくなりました!
本当にありがとうございました!
また何かあった時はよろしくお願いします。
ツイート | ![]() |