表结构
-----------------------------------------------------
|    编号 |       姓名         |    拼音码          |
-----------------------------------------------------
|  0001   |    李千万          |     LQW            |
-----------------------------------------------------
其中拼音码是由一个函数根据GETPINYIN(STR)得到的。
DBGridEH中显示为
----------------------------------------------
|     编号 |           姓名                  |
----------------------------------------------
|   0001   |        李千万                   |
----------------------------------------------
我直接在DBGridEH双击修改 姓名’李千万’为’张三’怎么能把此记录的拼音码’LQW’自动改为’ZS’
我就是不知道哪个事件里自动提交拼音码,还有因为还没有提交,我怎么才能取到那个没有提交的姓名’张三’呢,转换成拼音的函数要根据这个还生成拼音 也可见
http://community.csdn.net/Expert/topic/3655/3655253.xml?temp=.5742609

解决方案 »

  1.   

    可以在Field对应的OnSetText事件里面写代码,或者也可以采用
    定义一个全局String变量:
    然后在Dbgrideh的KeyPress事件里面:
    begin
      GridKeyvalue:='';
      GridKeyvalue:= GridKeyvalue+key;
    然后你就用你的函数GETPINYIN(STR)得到拼音。然后就赋值
      

  2.   

    怎么在BEFOREPOST事件里取得还没有提交的[姓名]的值呢,并把它转为SHORTSTRING类型呢,小弟感激不尽
      

  3.   

    解决了,放分,呵呵,谢谢各位
    procedure Tdm.ADOQ2xingmingChange(Sender: TField);
    var
    s_sp:shortstring;
    begin
         s_sp:='';
         S_SP:=ADOQ2xingming.Text;
         getbm(s_SP, 3);
         ADOQ2.FieldByName('pinyin').AsString:=s_SP;
    end;