いつまで経っても初心者のベカと申します。
早速ですが、教えてください。
フォームに50音順に並んだボタンを配置して(銀行のCD機のようなもの)、
そのボタンを押すと漢字に変換できるような物を作りたいのですが、どうすればいいのかまったく解らず困っております。ご教授願います。
書き忘れましたが、Delphi5&XPを使っております。
よろしくお願い致します。
ボタンを配置して「かな」を入力する部分と、漢字に変換する部分の
どちらが分からないのでしょうか?
こんな感じでしょうか?
フォームに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.
レスが遅くなりました。
ななしさん、Kashikenさんありがとうございます。
ななしさん、漢字に変換する部分がお手上げ状態です。
Kashiken さん、ソースありがとうございます。
実行してみましたが 「ファイルが見つかりません : 'Variants'」のエラーが
出てしまいます。 Variants.pas は何処に・・・
引き続きよろしくお願い致します。
え。5ってVariantsってVCLに入って無いんですか?
>え。5ってVariantsってVCLに入って無いんですか?
Delphi5では,Variantsをusesしなくても,Variant変数が使用可能です.
UnitソースをコピペしたのでVariantsもusesしてありますが、なしでも実行可です。
usesにImmを追加し、Button1,2のOnClickを書き直せば動くと思います。
Kashikenさん、皆様。ありがとうございました。
お陰様で無事できるようになりました。
今後ともよろしくお願い申し上げます。
ツイート | ![]() |