キーボードを使わずに日本語入力をするには?

解決


ベカ  2005-08-19 19:10:39  No: 17162  IP: 192.*.*.*

いつまで経っても初心者のベカと申します。
早速ですが、教えてください。
フォームに50音順に並んだボタンを配置して(銀行のCD機のようなもの)、
そのボタンを押すと漢字に変換できるような物を作りたいのですが、どうすればいいのかまったく解らず困っております。ご教授願います。

編集 削除
ベカ  2005-08-19 19:13:34  No: 17163  IP: 192.*.*.*

書き忘れましたが、Delphi5&XPを使っております。
よろしくお願い致します。

編集 削除
ななし  2005-08-20 18:49:21  No: 17164  IP: 192.*.*.*

ボタンを配置して「かな」を入力する部分と、漢字に変換する部分の
どちらが分からないのでしょうか?

編集 削除
Kashiken  2005-08-20 22:37:52  No: 17165  IP: 192.*.*.*

こんな感じでしょうか?
フォームにButton1,2とEdit1を張りつけ、Unit1を以下と置き換えて実行してみてください。
Button1を押すとEdit1に'あ'を挿入、
Button2で変換を行います。
(ソースの一部をここの過去ログからお借りしました)
----------------------------------------------------------
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:=Edit1.Text+'あ';
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  S: String;
  Imc: HIMC;
begin
  Edit1.SetFocus;
  S := Edit1.Text;
  if S = '' then Exit;
  Edit1.Clear;
  Imc := ImmGetContext(Edit1.Handle);
  ImmSetCompositionStringA(Imc, SCS_SETSTR, PChar(S),Length(S),nil,0);
//変換文字列の設定
  ImmNotifyIME(Imc, NI_COMPOSITIONSTR, CPS_CONVERT, 0); //変換実行
  ImmNotifyIME(Imc, NI_OPENCANDIDATE, 0, 0); //変換候補リスト表示
  IMMReleaseContext(Edit1.Handle, Imc);
end;


end.

編集 削除
ベカ  2005-08-21 12:53:05  No: 17166  IP: 192.*.*.*

レスが遅くなりました。
ななしさん、Kashikenさんありがとうございます。

ななしさん、漢字に変換する部分がお手上げ状態です。

Kashiken さん、ソースありがとうございます。
実行してみましたが 「ファイルが見つかりません : 'Variants'」のエラーが
出てしまいます。 Variants.pas は何処に・・・

引き続きよろしくお願い致します。

編集 削除
Delφ  2005-08-21 14:54:12  No: 17167  IP: 192.*.*.*

え。5ってVariantsってVCLに入って無いんですか?

編集 削除
Mr.XRAY  URL  2005-08-21 15:05:06  No: 17168  IP: 192.*.*.*

>え。5ってVariantsってVCLに入って無いんですか?

Delphi5では,Variantsをusesしなくても,Variant変数が使用可能です.

編集 削除
Kashiken  2005-08-21 18:20:16  No: 17169  IP: 192.*.*.*

UnitソースをコピペしたのでVariantsもusesしてありますが、なしでも実行可です。
usesにImmを追加し、Button1,2のOnClickを書き直せば動くと思います。

編集 削除
ベカ  2005-08-22 02:05:57  No: 17170  IP: 192.*.*.*

Kashikenさん、皆様。ありがとうございました。
お陰様で無事できるようになりました。
今後ともよろしくお願い申し上げます。

編集 削除