喫茶XRAYトップページ

[▲前のスレッド]

[2150] フリガナ入力エディト返信 削除
2009/2/17 (火) 11:23:25 白猫
イメージが少し変わったのですね?
こっちの方が、カッコイイです!

ちょっと、無理かなと思っているのですが

フリガナ入力エディトは、vistaでは、うまく
動かないようです。

OSの内部が変わって、しまったので、当たり前と
言えば、当たり前ですが

もし、できれば、Vistaでも、動くように
なってくれれば、助かるのですが?

ご無理と思いながら、お願いごとです


[2152] Re:フリガナ入力エディト返信 削除
2009/2/17 (火) 13:52:07 Mr.XRAY
▼ 白猫さん
> イメージが少し変わったのですね?
> こっちの方が、カッコイイです!


廃人の方々には明るすぎるかな〜?

> フリガナ入力エディトは、vistaでは、うまく
> 動かないようです。


う〜む.
Delphi2009との兼ね合いもあるし.
どうしようかと悩んでいるところです.
とりあえず,Delphi2007での動作確認だけ先にする,という方針にしようかな.

[2159] Re2:フリガナ入力エディト返信 削除
2009/2/18 (水) 15:37:10 白猫
▼ Mr.XRAYさん
返信が送れて申し訳ありません
よろしく、お願い申し上げます

VISTAをいじくり廻していたら
落ちて、死んでしまいました
涙流しながら、大笑いです
ナンヤネン このOS!

> ▼ 白猫さん
> > イメージが少し変わったのですね?
> > こっちの方が、カッコイイです!
>
> 廃人の方々には明るすぎるかな〜?
>
> > フリガナ入力エディトは、vistaでは、うまく
> > 動かないようです。
>
> う〜む.
> Delphi2009との兼ね合いもあるし.
> どうしようかと悩んでいるところです.
> とりあえず,Delphi2007での動作確認だけ先にする,という方針にしようかな.


[2191] Re3:フリガナ入力エディト返信 削除
2009/3/2 (月) 03:07:52 Fusa
Editから入力をしたときのフリガナを取得する、
というのを一歩すすめて

漢字の再変換機能を使って入力もしてないのに読み仮名を取得するコードはいかがでしょうか?

以前、どこかで拾ったサンプルです。

unit Unit7;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Imm;

type
  TForm7 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.Button1Click(Sender: TObject);
var
  imc: HIMC;                            // 入力コンテキストのハンドル
  KeyBoardLayout: HKL;                  // キーボードレイアウト
  DataList: PCandidateList;             // CANDIDATELIST 構造体へのポインタ
  intSize: integer;                     // サイズ
  tmpPChar: PChar;
  offSet: DWORD;
  i, intIndex: Integer;
begin
  Edit1.SetFocus;
  Label1.Caption := '';
  Label2.Caption := '';
  ListBox1.Clear;

 
  // 指定されたウィンドウに関連付けられている入力コンテキストを取得します。
  imc := ImmGetContext(Application.Handle);
  try
    KeyBoardLayout := GetKeyboardLayout(0);

    // 変換結果を受け取るために必要なバッファサイズを取得します。
    intSize := ImmGetConversionList(
        KeyBoardLayout, imc, PChar(Edit1.Text), nil, 0, GCL_REVERSECONVERSION);

    // DataListに、intSize分のメモリを割り当てます。
    GetMem(DataList, intSize);

    try
      // Edit1.Textに入力された文字列を逆変換し、DataListに保存します。
      ImmGetConversionList(
          KeyBoardLayout, imc, PChar(Edit1.Text), DataList, intSize, GCL_REVERSECONVERSION);

      tmpPChar := PChar(DWORD(DataList) + DataList^.dwOffset[1]);

      // フリガナを表示します。
      Label1.Caption := String(tmpPChar);

      offset := 0;

      // 変換候補数を表示します。
      Label2.Caption := IntToStr(DataList^.dwCount) + ' 件';

      for i := 0 to DataList^.dwCount - 1 do
      begin
        tmpPChar := PChar(DWORD(tmpPChar) + offset);
        intIndex := ListBox1.Items.Add(String(tmpPChar));
        offSet   := Length(ListBox1.Items[intIndex]) + 1;
      end;

    finally
      // メモリを解放します。
      FreeMem(DataList);
    end;
  finally
    // 入力コンテキストを解放し、コンテキスト内の関連メモリのロックを解除します。
    ImmReleaseContext(Application.Handle, imc);
  end;
end;


end.
Vistaでも動きます。

[2193] Re4:フリガナ入力エディト返信 削除
2009/3/2 (月) 07:54:11 Mr.XRAY
おはようございます.

> 漢字の再変換機能を使って入力もしてないのに読み仮名を取得するコードはいかがでしょうか?

なるほど.
ちょっと試してみましたが,同じのがでてくる時がありますね.
[フリガナ入力エディト]も,漢字→フリガナの機能もつけたいです.
時間があれば,一緒に付けたいですね.

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82