人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

Delphi下編程完成中文輸入法

Delphi下編程完成中文輸入法

更新時間:2022-09-30 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

江 蘇 省 電 信 傳 輸 局  

周 曉  

---- Borland Delphi 以 其 強 大 的 功 能 及 和 高 效 的 可 視 化 開 發(fā) 環(huán) 境 為 廣 大 程 序 設 計 員 所 青 睞 。 尤 其 是 它 封 裝 了WINDOWS API 函 數(shù), 能 方 便 地 利 用WINDOWS 資 源, 大 大 加 快 了 程 序 開 發(fā) 速 度。  


---- 在 平 時 的 計 算 機 操 作 中, 中 文 輸 入 是 不 可 避 免 的。 使 用 者 可 能 喜 歡 不 同 的 中 文 輸 入 法(inputmethod editor, 簡 稱IME), 這 就 不 得 不 經(jīng) 常 點 擊 任 務 欄 中 的 中 文 圖 標 或 用CTRL+Space,CTRL+Shift 熱 鍵 切 換, 初 學 者 用 起 來 很 不 方 便。 針 對 這 一 問 題, 可 以 在 開 發(fā) 軟 件 時, 在 程 序 中 設 置 用 戶 喜 歡 的 中 文 輸 入 法, 方 便 用 戶 的 使 用。Delphi 中 只 有 少 數(shù) 控 件 如TEdit 支 持IME, 而 且 該 功 能 不 強, 不 能 在 運 行 時 更 改 輸 入 法。  


---- 筆 者 通 過 實 踐 和 摸 索, 查 找 了 相 關(guān) 的IME 資 料, 利 用 了WINDOWS API 函 數(shù), 實 現(xiàn) 了IME 的 功 能。  


---- 常 用 函 數(shù) 有:  


API函數(shù):BOOL ImmSimulateHotKey

(HWND hWnd,DWORD dwHotKeyID);//模擬熱鍵

其中Hwnd為程序窗口的句柄,dwHotHKeyID

為模擬的熱鍵,若成功則返回True


HKL GetKeyboardLayout(DWORD dwLayout);

//獲得當前鍵盤狀態(tài)


BOOL ImmIsIME(HKL hKL);

//判斷當前是否處于中文輸入狀態(tài),若是則返回True

自定義函數(shù):

打開相應輸入法:OpenIme(imename:string),

例OpenIme('全拼輸入法');

關(guān)閉中文輸入法:CloseIme;


以下是一個簡單的例子,僅起參考作用。


使用時uses中加上imm  


具體的實現(xiàn)方法及源代碼如下:  

unit Unit1;


interface


uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons,imm;


type

TForm1 = class(TForm)

ComboBox1: TComboBox;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

procedure FormShow(Sender: TObject);

procedure OpenIme(imename:string);

procedure closeIme;

procedure ComboBox1Change(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);


private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.FormShow(Sender: TObject);

var

j:integer;

begin

for j:=0 to screen.imes.count-1 do

begin

ComBoBox1.Items.Add(screen.Imes.strings[j]);

//獲取系統(tǒng)中已安裝的中文輸入法

end;

end;


procedure Tform1.OpenIme(imename:string);

var

I:integer;

myhkl:hkl;

begin

if ImeName<>'' then

begin

if Screen.Imes.Count<>0 then

begin

I:=screen.Imes.indexof(imename);

if I>=0 then

myhkl:=hkl(screen.Imes.objects[i]);

activatekeyboardlayout(myhkl,

KLF_ACTIVATE);//設置相應的輸入法

end;

end;  

end;


procedure TForm1.closeime;

var

myhkl:hkl;

begin

myhkl:=GetKeyBoardLayOut(0);

if ImmIsIME(myhkl) then  

//判斷是否在中文狀態(tài),若是則關(guān)閉它

immsimulateHotkey(handle,

IME_CHotKey_IME_NonIME_Toggle);

end;


procedure TForm1.ComboBox1Change(Sender: TObject);

begin

OpenIme(ComboBox1.Text);

end;


procedure TForm1.BitBtn1Click(Sender: TObject);

begin

immsimulateHotkey(handle,

IME_CHotKey_shape_Toggle);//切換半角和全角模式

end;


procedure TForm1.BitBtn2Click(Sender: TObject);

begin

immsimulateHotkey(handle,

IME_CHotKey_symbol_Toggle);

//切換中文標點模式和英文標點模式

end;


 

 

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

closeime;

end;


end.

---- 本 程 序 在Delphi 3.0/4.0 下 通 過。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 安丘市| 虎林市| 兴宁市| 吐鲁番市| 正镶白旗| 淮滨县| 灵武市| 东港市| 抚宁县| 三门县| 乐东| 安庆市| 临朐县| 新余市| 宜兴市| 通山县| 克山县| 阜宁县| 常德市| 汾西县| 温州市| 太湖县| 东宁县| 武邑县| 白河县| 襄垣县| 大宁县| 潞西市| 莆田市| 翼城县| 南宁市| 渝中区| 大竹县| 和顺县| 永顺县| 济阳县| 衡南县| 合川市| 青岛市| 麦盖提县| 高邑县|