さて、Linux版 Lazarus/CodeTyphonの日本語入力問題
の解決方法を記事にしていますが、
日本語入力時に文字確定ごとに選択されてしまい、使いずらい問題を解決しました。
決していい方法ではないですが、自分で使う分には
困らないので、ソース改造をして、これでひとまず解決とします。
漢字入力時にInputBoxで日本語入力を受け取るように
FormKeydownイベントに書いているのですが、
このInputboxの仕様が文字の自動選択がOnになっているのが
原因でした。
なので、これをやめてしまえばいいことになります。
Inputbox, InputQueryなどの命令に影響しますが、
どちらも日本語入力前提で考えれば自動選択はじゃまですので、
改造してしまうことにしました。
ソースフォルダの /ide/include にあります、
ファイルInputDialog.incがその改造箇所です。
DefaultInputDialog関数がその該当箇所ですので、
ソース中のParent:=Form; の前などに
with Edit do begin AutoSelect:=false; // for Japanese Input Parent := Form; Top := Prompt.Height; Align := alTop; BorderSpacing.Top := NSpacing div 2; AMonitor := _InputQueryActiveMonitor; : : :
とします。
IDEを再構築して、試してみると文字選択はオフになり、
日本語を自然に入力してEnterで日本語が流し込まれます。
InputBoxの挙動が変わるので副作用がありますが、
むしろ改造後の挙動が便利だと思っています。
副作用なくやるには、自前で日本語入力フォームを作って、
それを呼んであげればいいとは思います。
InputBox自体が継承ができない? と思っているので
こういう方法になってしまいました。
うまい方法あれば連絡ください。
お試しあれ。
ではでは。