Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

Linux版Lazarus/CodeTyphonの日本語入力問題解決

さて、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自体が継承ができない? と思っているので

こういう方法になってしまいました。

 

うまい方法あれば連絡ください。

 

お試しあれ。

 

ではでは。