大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> Delphi下编程实现中文输入法

Delphi下编程实现中文输入法

时间: 2021-07-31 作者:daque

江 苏 省 电 信 传 输 局  周 晓  ---- borland delphi 以 其 强 大 的 功 能 及 和 高 效 的 可 视 化 开 发 环 境 为 广 大 程 序 设 计 员 所 青 睐 。 尤 其 是 它 封 装 了windows api 函 数, 能 方 便 地 利 用windows 资 源, 大 大 加 快 了 程 序 开 发 速 度。  ---- 在 平 时 的 计 算 机 操 作 中, 中 文 输 入 是 不 可 避 免 的。 使 用 者 可 能 喜 欢 不 同 的 中 文 输 入 法(inputmethod editor, 简 称ime), 这 就 不 得 不 经 常 点 击 任 务 栏 中 的 中 文 图 标 或 用ctrl+space,ctrl+shift 热 键 切 换, 初 学 者 用 起 来 很 不 方 便。 针 对 这 一 问 题, 可 以 在 开 发 软 件 时, 在 程 序 中 设 置 用 户 喜 欢 的 中 文 输 入 法, 方 便 用 户 的 使 用。delphi 中 只 有 少 数 控 件 如tedit 支 持ime, 而 且 该 功 能 不 强, 不 能 在 运 行 时 更 改 输 入 法。  ---- 笔 者 通 过 实 践 和 摸 索, 查 找 了 相 关 的ime 资 料, 利 用 了windows api 函 数, 实 现 了ime 的 功 能。  ---- 常 用 函 数 有:  api因变量:bool immsimulatehotkey (hwnd hwnd,dword dwhotkeyid);//模仿热键 个中hwnd为步调窗口的句柄,dwhothkeyid 为模仿的热键,若胜利则归来true hkl getkeyboardlayout(dword dwlayout); //赢得暂时键盘状况 bool immisime(hkl hkl); //确定暂时能否居于华文输出状况,假如则归来true 自设置因变量: 翻开相映输出法:openime(imename:string), 例openime('全拼输出法'); 封闭华文输出法:closeime; 以次是一个大略的例子,仅起参考效率。 运用时uses中加上imm  简直的实行本领及源代码如次:  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]); //获得体例中已安置的华文输出法 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  //确定能否在华文状况,假如则封闭它 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 下 通 过。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.