信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 10590|回复: 17
打印 上一主题 下一主题

Delphi程序实现直接用中文输入的超级好方法

[复制链接]

1887

主题

1897

帖子

1万

积分

积分
11042
跳转到指定楼层
宣传软件楼主
发表于 2017-8-11 22:52:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:Delphi基础教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件中级教程 

软件教程发布日期:2017-08-11

软件教程关键字:Delphi程序实现直接用中文输入的超级好方法

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
本帖最后由 群发软件 于 2017-8-11 23:05 编辑

Delphi程序实现直接用中文输入的超级好方法

 BorlandDelphi以其强大的功能及和高效的可 视化开发环境为广大程序设计员所青睐。尤其是它封装了WINDOWSAPI函数,能方便地利 用WINDOWS资源,大大加快了程序开发速度。

  在平时的计算机操作中,中文输入是不可避免的。 使用者可能喜欢不同的中文输入法(inputmethodeditor,简称IME),这就不得不经常点击 任务栏中的中文图标或用CTRL+Space,CTRL+Shift热键切换,初学者用起来很不方便。针对 这一问题,可以在开发软件时,在程序中设置用户喜欢的中文输入法,方便用户的使用。Delphi 中只有少数控件如TEdit支持IME,而且该功能不强,不能在运行时更改输入法。

  笔者通过实践和摸索,查找了相关的IME资料,利 用了WINDOWSAPI函数,实现了IME的功能。

  常用函数有:

API函数:BOOLImmSimulateHotKey

(HWNDhWnd,DWORDdwHotKeyID);//模拟热键

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

为模拟的热键,若成功则返回True

HKLGetKeyboardLayout(DWORDdwLayout);

//获得当前键盘状态


BOOLImmIsIME(HKLhKL);

//判断当前是否处于中文输入状态,若是则返回True

自定义函数:

打开相应输入法:OpenIme(imename:string),

例OpenIme(全拼输入法);

关闭中文输入法:CloseIme;

以下是一个简单的例子,仅起参考作用。

使用时uses中加上imm

具体的实现方法及源代码如下:

unitUnit1;

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;

procedureFormShow(Sender:TObject);

procedureOpenIme(imename:string);

procedurecloseIme;

procedureComboBox1Change(Sender:TObject);

procedureBitBtn1Click(Sender:TObject);

procedureBitBtn2Click(Sender:TObject);

procedureBitBtn3Click(Sender:TObject);

private

{Privatedeclarations}

public

{Publicdeclarations}

end;

var

Form1:TForm1;

implementation

{$R*.DFM}

procedureTForm1.FormShow(Sender:TObject);

var

j:integer;

begin

forj:=0toscreen.imes.count-1do

begin

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

  //获取系统中已安装的中文输入法

end;

end;

procedureTform1.OpenIme(imename:string);

var

I:integer;

myhkl:hkl;

begin

ifImeName<>then

begin

ifScreen.Imes.Count<>0then

begin

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

ifI>=0then

myhkl:=hkl(screen.Imes.objects);

activatekeyboardlayout(myhkl,

  KLF_ACTIVATE);//设置相应的输入法

end;

end;

end;

procedureTForm1.closeime;

var

myhkl:hkl;

begin

myhkl:=GetKeyBoardLayOut(0);

ifImmIsIME(myhkl)then

//判断是否在中文状态,若是则关闭它

immsimulateHotkey(handle,

IME_CHotKey_IME_NonIME_Toggle);

end;

procedureTForm1.ComboBox1Change(Sender:TObject);

begin

OpenIme(ComboBox1.Text);

end;

procedureTForm1.BitBtn1Click(Sender:TObject);

begin

immsimulateHotkey(handle,

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

end;

procedureTForm1.BitBtn2Click(Sender:TObject);

begin

immsimulateHotkey(handle,

IME_CHotKey_symbol_Toggle);

  //切换中文标点模式和英文标点模式

end;

procedureTForm1.BitBtn3Click(Sender:TObject);

begin

closeime;

end;

end.

在Delphi中一个汉字占两个字节,各种字符串处理函数,直接处理字符串中汉字时经常会发生乱码或不显示。我在处理时也是弄了半天,到处找资料,一下是找到的几种处理方法。在Delphi7下测试通过。

一.中文所用的字符全是双字节字符,英文所用的字节全是单字节字符,也就是mbSingleByte。本实例是用ByteType()函数返回字符串指定位置上的字符,如果不是mbSingleByte,则表示为双字节字符。主要代码如下:

procedure TForm1.Button1Click(Sender: TObject);
    var
     s,s1: String;
     i : Integer;
    begin
     s := Edit1.Text;
     i := 0;
     while i<Length(s) do
     begin
      if (ByteType(S,i) <> mbSingleByte) then
      begin
       s1 := s1+ Copy(s,i,2)+' ';
       i := i+2;
      end
      else
       i:= i+1;
     end;
     Label2.Caption := Trim(s1);
    end;

二.本实例是用Length()函数来获取字符串的长度,用Ord()函数来获取每个字符的ASCII码,当ASCII码的值大于$7F时,表示该字符是汉字的前一个字节,并用Copy()函数来获取当前的汉字。主要代码如下:

procedure TForm1.Button2Click(Sender: TObject);
var
     str,s,sj: String;
     i: integer;
    begin
     str := trim(Edit1.Text);
     i := 0;
     while i< Length(str) do
     begin
      if ord(str) > $7F then
      begin
       s := Copy(str,i,2);
       sj :=sj+ '"'+s+'"';
       i := i+2;
      end
      else  i:=i+1;
     end;
     Label2.Caption := '在字符串中含有汉字'+sj;
    end;
三用widestring类型。widestring处理汉字时汉字按一个字符算。代码如下:

procedure TForm1.Button3Click(Sender: TObject);
var
  str:string;
  badword,filtstr:widestring;
  filtcount,i:integer;
  msg:widestring;
begin
  msg:=edit1.Text;
  for i:=1 to length(msg) do
   begin
     if Pos((msg),filtstr)<>0 then
        begin
          badword:=badword+msg+',';
          msg:=StringReplace(msg,msg,'*', []);
          filtcount:=filtcount+1;
        end;
   end;
   showmessage(msg);
end;


/1,函数代码

{

  判断字符串是否包含汉字
  // judgeStr:要判断的字符串
  //posInt:第一个汉字位置
}
function TForm2.IsHaveChinese(judgeStr: string; var posInt: integer): boolean;
var
  p: PWideChar; // 要判断的字符
  count: integer; // 包含汉字位置
  isHave: boolean; // 是否包含汉字返回值
begin

  isHave := false; // 是否包含汉字返回值默认为false
  count := 1; // 包含汉字位置默认为1

  p := PWideChar(judgeStr); // 把要判断字符串转换

  // 循环判断每个字符
  while p^ <> #0 do
  begin
    case p^ of
      #$4E00 .. #$9FA5:
        begin
          isHave := true; // 设置是否包含汉字返回值为true
          posInt := count; // 设置包含汉字位置
          break; // 退出循环
        end;

    end;

    Inc(p);
    Inc(count); // 包含汉字位置递增
  end;

  result := isHave;

end;


//2,例子:

procedure TForm2.Button3Click(Sender: TObject);
var
  testStr1, testStr2: string;
  posInt: integer;
begin
  testStr1 := '12345';
  testStr2 := '123汉字45';

  if self.IsHaveChinese(testStr1, posInt) = true then
  begin
    ShowMessage(testStr1 + ' 包含汉字 :' + inttostr(posInt));
  end
  else
  begin
    ShowMessage(testStr1 + ' 不包含汉字');
  end;

  if self.IsHaveChinese(testStr2, posInt) = true then
  begin
    ShowMessage(testStr2 + ' 包含汉字 :' + inttostr(posInt));
  end
  else
  begin
    ShowMessage(testStr2 + ' 不包含汉字');
  end;
end;



unto新版好用的(中国环保在线)B2B群发软件脚本next全自动群发(中国化工仪器网)信息发布软件
回复

使用道具 举报

0

主题

603

帖子

573

积分

积分
573
信息发布软件沙发
发表于 2017-8-15 00:23:38 | 只看该作者
很专业。。。

回复 支持 反对

使用道具 举报

0

主题

609

帖子

591

积分

积分
591
推广工具板凳
发表于 2017-8-15 02:08:13 | 只看该作者
很好,定制的效果也很好。

回复 支持 反对

使用道具 举报

0

主题

612

帖子

602

积分

积分
602
软件定制开发地板
发表于 2017-8-16 00:54:23 | 只看该作者
,大爱,喜欢,是我想要的,不错,值得购买,

回复 支持 反对

使用道具 举报

0

主题

594

帖子

576

积分

积分
576
5#定制软件#
发表于 2017-8-18 03:05:30 | 只看该作者
心不懂就问他就告诉也不嫌弃烦不给好评等啥呢必须好评太给力了好多客人都说我家店铺好看。从来没有碰到过

回复 支持 反对

使用道具 举报

0

主题

602

帖子

594

积分

积分
594
6#定制软件#
发表于 2017-8-18 16:22:04 | 只看该作者
感谢店家的细心指导!!谢谢!

回复 支持 反对

使用道具 举报

0

主题

629

帖子

630

积分

积分
630
7#定制软件#
发表于 2017-8-19 00:23:47 | 只看该作者
很好,东西很好用!

回复 支持 反对

使用道具 举报

0

主题

623

帖子

643

积分

积分
643
8#定制软件#
发表于 2017-8-22 19:11:40 | 只看该作者
好,网站做得也非常的漂亮,另外强调一下:17号技术员很不错,非常的负责任。为17号技术员赞一个。

回复 支持 反对

使用道具 举报

0

主题

631

帖子

592

积分

积分
592
9#定制软件#
发表于 2017-8-22 22:11:33 | 只看该作者
,服务亲切,客服指导很有耐心。设计很漂亮,很贴切,值得推荐啦!

回复 支持 反对

使用道具 举报

0

主题

2180

帖子

564

积分

积分
564
10#定制软件#
发表于 2017-8-22 22:51:41 | 只看该作者
晚,价格合适,功能齐全,尤其是技术客服服务周到,花很少的钱做很大的事,合作愉快,希望以后更好合作

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件安卓手机config配置演示实列
安卓手机config配置演示实列
群发软件苹果脚本配置config小实例
苹果脚本配置config小实例 https://www.yuque.com/aiwork/dcvhmb/qolobpysdg0hvi2e
群发软件苹果脚本矩形类rect小实例
苹果脚本矩形类rect小实例
群发软件AIWROK安卓苹果平台设计的实用工具库
AIWROK安卓苹果平台设计的实用工具库
群发软件AIWROK软件Function导入方法实例演示
AIWROK软件Function导入方法实例演示
群发软件苹果脚本实例1项目project应用示例
苹果脚本实例1项目project应用示例
群发软件苹果脚本实例1剪贴板功能集成
苹果脚本实例1剪贴板功能集成
群发软件苹果iOS脚本Detect类系统性使用示例
苹果iOS脚本Detect类系统性使用示例
群发软件AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
群发软件H5案例自动化看广告撸金币系统
H5案例自动化看广告撸金币系统
群发软件AIWROK苹果脚本H5任务执行小例子
AIWROK苹果脚本H5任务执行小例子
群发软件AIWROK软件苹果水平容器[Horizontal]小实例
AIWROK软件苹果水平容器[Horizontal]小实例
群发软件AIWROK苹果脚本实例1界面UI输入框类[Input]
AIWROK苹果脚本实例1界面UI输入框类
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法
群发软件苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
群发软件AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
群发软件IOS苹果脚本View的完整功能实例
IOS苹果脚本View的完整功能实例
群发软件AIWROK苹果系统实例演示1标签类[Label]方法
AIWROK苹果系统实例演示1标签类[Label]方法
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-3-22 18:12 , Processed in 1.297647 second(s), 56 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表