CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

怎么样让窗体中的DBGrid,Edit等控件得到焦点时系统不自动切换输入法

楼主afei78223(阿飞)2005-01-13 10:48:49 在 Delphi / Windows SDK/API 提问

DbGrid,Edit等控件都有ImeMode,和   ImeName   属性,在ImeName中设置了一种输入法后,在控件得到焦点后就强制转换为该输入法,怎样控制可以是系统不自动切换输入法,让输入法保持以前的状态? 问题点数:100、回复次数:8Top

1 楼jackie168(http://soft.eastrise.net)回复于 2005-01-13 10:53:01 得分 30

ImeName   属性为空,不要去设置它不就行了。。。Top

2 楼gxgyj(杰克逊)回复于 2005-01-13 10:53:07 得分 20

如果你要那样,那为什么还要设置ImeName...  
  不设置不就行了吗.....Top

3 楼Kevin_Lmx(繁华阅尽)回复于 2005-01-13 10:59:38 得分 10

^_^  
  ImeMode和ImeName就是用来转换输入法的.....Top

4 楼afei78223(阿飞)回复于 2005-01-13 12:02:45 得分 0

谢谢各位!^_^  
  假如用户想要自己定义输入法,(比如有的人用智能ABC,有的人用五笔字型,有的人用紫光拼音输入)如果不是通过快捷键切换输入法,而是希望自己在程序运行的时候动态修改DBGrid的   ImeName属性好象不能实现切换到指定的输入法,但是Edit却可以实现切换到指定的输入法,不知道是不是DbGrid   的问题?Top

5 楼cqwty(笨小孩)回复于 2005-01-13 12:34:43 得分 10

dbgrid也有和edit一样的属性啊。Top

6 楼lzy6204(为了忘却的记忆)回复于 2005-01-13 13:02:10 得分 20

//取得输入法  
  function   TForm1.get_ime:   string;  
  var  
      i:   integer;  
      HKL1:   HKL;  
  begin  
      result   :=   '';  
      HKL1   :=   getkeyboardlayout(0);  
      for   i   :=   0   to   screen.imes.count   -   1   do  
      begin  
          if   HKL1   =   HKL(screen.imes.Objects[i])   then  
          begin  
              result   :=   screen.imes.Strings[i];  
          end;  
      end;  
  end;  
   
  //设置输入法  
   
  procedure   TForm1.set_ime(ImeName:   string);  
  var  
      i:   Integer;  
      HKL1:   HKL;  
  begin  
      if   not   SysLocale.FarEast   then   Exit;  
      if   ImeName   =   ''   then  
          ActivateKeyboardLayout(Screen.DefaultKbLayout,   KLF_ACTIVATE)  
      else  
      begin  
          if   (AnsiCompareText(ImeName,   Screen.DefaultIme)   <>   0)   and   (Screen.Imes.Count  
              <>   0)   then  
          begin  
              HKL1   :=   Screen.DefaultKbLayout;  
              i   :=   Screen.Imes.IndexOf(ImeName);  
              if   i   >=   0   then   HKL1   :=   HKL(Screen.Imes.Objects[i]);  
              ActivateKeyboardLayout(HKL1,   KLF_ACTIVATE);  
          end  
      end;  
  end;Top

7 楼shxng(重新开始。。。)回复于 2005-01-13 19:55:13 得分 5

收藏Top

8 楼coolnan(踏平九城)回复于 2005-01-14 16:02:29 得分 5

你真猛,收藏!Top

相关问题

  • 整个窗体内的控件共享输入法的问题
  • 怎么不让窗体和控件得到焦点(输入法中的虚键盘),怎么实现
  • Mdi的主窗体上放了dbgrid控件后,总是覆盖子窗体,如何解决?
  • 如何令窗体跟随关标(象输入法那样)
  • 如何令窗体跟随关标(象输入法那样)??
  • 谁有窗体的控件!!!
  • 创建窗体及控件
  • MDI窗体控件问题.
  • C#主窗体有控件,控件会挡住子窗体!
  • 紧急求救!!窗体最前端!!输入法对程序最小化影响!!!!

关键词

  • 输入法
  • 控件
  • 属性
  • hkl
  • imename
  • 切换
  • imes
  • dbgrid
  • screen
  • 设置

得分解答快速导航

  • 帖主:afei78223
  • jackie168
  • gxgyj
  • Kevin_Lmx
  • cqwty
  • lzy6204
  • shxng
  • coolnan

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo