掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Edit内の全角文字を不正と判断する方法を教えてください (ID:23987)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
入力制限をかける例です。 type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FEditDefProc: TWndMethod; procedure EditProc(var Message: TMessage); end; var Form1: TForm1; implementation {$R *.DFM} uses Clipbrd; procedure TForm1.FormCreate(Sender: TObject); begin FEditDefProc:= Edit1.WindowProc; Edit1.WindowProc:= EditProc; end; procedure TForm1.FormDestroy(Sender: TObject); begin Edit1.WindowProc:= FEditDefProc; end; procedure TForm1.EditProc(var Message: TMessage); var wMsg: TMsg; S : String; i : Integer; begin // 2バイト文字チェック case Message.Msg of WM_CHAR: if Chr(Message.WParam) in LeadBytes then begin // メッセージキューのTrailByteを削除 if PeekMessage(wMsg, Edit1.Handle, WM_CHAR, WM_CHAR, PM_NOREMOVE) and (wMsg.message = WM_CHAR) and (wMsg.wParam in [$40..$FF]) then PeekMessage(wMsg, Edit1.Handle, WM_CHAR, WM_CHAR, PM_REMOVE); MessageBeep($FFFFFFFF); Exit; end; WM_PASTE: if Clipboard.HasFormat(CF_TEXT) then begin S:= Clipboard.AsText; for i:= 1 to Length(S) do if S[I] in LeadBytes then begin MessageBeep($FFFFFFFF); Exit; end; end; end; // Edit1デフォルト処理 FEditDefProc(Message); end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.