Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[更新 2005年11月23日] [更新 2013年12月25日] フリガナ入出力エディトコンポーネント
   
フリガナ入出力エディトコンポーネント
テストプログラム omYomiOut
動作確認等 Windows 7 U64(SP1) + Delphi XE Pro







読みがな出力テスト


入力した漢字の読みがなを出力するテストです.読みがなは最後に入力した「ひらがな」あるいは「カタカナ」を出力します.


[備考]
この機能を実装したアプリケーションの納入先での話です.ふりがなの再入力を嫌い,目的の漢字が現れるまで変換候補を,時間をかけて探している方がいました.
読みがな出力の機能を使用せず,普通に入力した方がはるかに効率的だとは思うのですが.


図1
設計時画面
  • プロパティの設定はコード内に記述
図2
漢字変換中
  • [日本] を確定したので出力
図3
漢字入力確定
  • [Enter] で出力先のエディトにフォーカス移動
  • 読みがなが出力先に出力される
図4
ImeMode による違い
  • 出力先 (OutputEdit プロパティの値) の ImeMode が imHira の場合はひらがなが出力される

リスト1
テストプログラムのコード 
unit omYomiOutUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms,
  Dialogs, plKanaEdit, StdCtrls;

type
  TForm1 = class(TForm)
    plKanaEdit1: TplKanaEdit;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormShow(Sender: TObject);
    procedure plKanaEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//=============================================================================
//  Formを表示したら各コントロールのテキストはクリア
//  読みがな文字列の出力先はEdit1
//=============================================================================
procedure TForm1.FormShow(Sender: TObject);
begin
  Edit1.Text := '';
  Edit2.Text := '';

  Edit1.ImeMode := imKata;   //imHiraにすればひらがなで出力される
  Edit2.ImeMode := imHira;

  plKanaEdit1.OutputEdit := Edit1;
  plKanaEdit1.OutputMode := omYomiOut;

  plKanaEdit1.Text := '';
end;

//=============================================================================
//  [Enter]キー押下の処理
//  次の[Tab]順序のコントロールにフォーカス移動
//  このFormのコントロールのOnKeyDown共用イベント
//=============================================================================
procedure TForm1.plKanaEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=VK_RETURN then begin
    keybd_event( VK_TAB, 0, 0 , 0 );
    keybd_event( VK_TAB, 0, KEYEVENTF_KEYUP , 0);
  end;
end;

end.