掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
del5pro:editコントロールでひらがな以外の入力を禁止させる (ID:33972)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
勝爺:「あ、マコト、そこのランプ取ってくれないか」 真琴:「これ? はい、ランプ、掃除するの?」 勝爺:「おぅ、ありがとぅ、磨いてキレイにな、…それから、ついでにソコの雑巾も」 真琴:「おじいちゃん、自分で取りにいけばいいじゃない、横着なんだから…はい、雑巾」 勝爺:「昔から言うだろぅ、"立ってるものは孫でも使え"ってな^^;」 真琴:「あのね、おじいちゃん、それって…」 春子:「おっはよ〜、タンポポも咲いて、春だよねぇ」 真琴:「おはようございます、…あの、ハルコさん、面白そうだからアタシもチョットやってみたんだけど…」 春子:「ン? ナニを?」 真琴:「Editの入力で、"ひらがな"以外は禁止する方法」 春子:「Editの入力制限? ふ〜ん、どうやったの?」 真琴:「人によって方法はイロイロだけど、アタシはこうしてみたの」 type TEdit = class(StdCtrls.TEdit) private procedure WmImeComposition(var Msg: TMessage); message WM_IME_COMPOSITION; procedure WmPaste(var Msg: TMessage); message WM_PASTE; end; TForm1 = class(TForm) ...... procedure TEdit.WmImeComposition(var Msg: TMessage); function GetInputStr(Handle: THandle): Boolean; var Imc: HIMC; i, Len: Integer; S: string; d: WORD; begin result := True; Imc := ImmGetContext(Handle); if Msg.LParam and GCS_RESULTSTR <> 0 then begin Len := ImmGetCompositionString(Imc, GCS_RESULTSTR, nil, 0); SetLength(S, Len); ImmGetCompositionString(Imc, GCS_RESULTSTR, PChar(S), Len+1); if Len = 1 then begin result := False; // 半角カナなど 1文字の場合 exit; end; for i:=0 to (Len div 2)-1 do begin d := Byte(s[i*2+1]) shl 8 + Byte(s[i*2+2]); if (d < $829F)or(d > $82F1) then begin result := False; exit; end; end; end; ImmReleaseContext(Handle, Imc); end; begin // フォームに貼り付けたEdit1だけをひらがな入力専用に if (Name = 'Edit1')and(not GetInputStr(Handle)) then Msg.result := 0 else inherited; end; procedure TEdit.WmPaste(var Msg: TMessage); begin if Name = 'Edit1' then Msg.result := 0 else inherited; end; 春子:「ナルホドね、変換確定時にひらがな以外があったら無視するってコト?」 真琴:「そうなの」 春子:「コピペも禁止?」 真琴:「うん、にしのさんが忘れてるから、イチオウ…」 春子:「あと、かな漢字混じりの文を確定したときの対処も違うじゃない?」 真琴:「どっちがイイかは、使う人によって好みが変わると思うけど」 春子:「↓これは確定文字列を1文字づつWord変数に入れてるのよね?」 d := Byte(s[i*2+1]) shl 8 + Byte(s[i*2+2]); 真琴:「そぅ、PWordで読み込みたいけど、それじゃバイト順序が逆になっちゃうから」 春子:「だったら、htons関数を使えば?」 真琴:「え? それナンなの?」 春子:「Wordのエンディアンの変更よ、本来はネットワーク通信の際のバイトオーダーの変換で使うンだけどね」 d := htons((PWord(PChar(S)+i*2))^); 真琴:「通信で使うもの? それをココで?」 春子:「そぅよ、昔から言うでしょ? "立ってるものは猫でも使え"って」 真琴:「…あの、ハルコさん、それって…」
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.