我想显示表的一个字段,其值为整数,1代表客,2代表货,3代表客货,我想给用户显示的是汉字,用下拉框让用户选择,但保存时是整数值,怎么搞,求救!!!

解决方案 »

  1.   

    下载EhLIb,里面有一个TCustomDBComboBoxEh控件,TCustomDBComboBoxEh.KeyItems存储的值,
    TCustomDBComboBoxEh.Items 显示值
      

  2.   

    2个办法:
    1、在DBGGrid里面插入Combobox
    2、DBGrid1.PickList可参考:
    http://community.csdn.net/Expert/topic/3189/3189567.xml?temp=.7700006
    http://borland.mblogger.cn/aiirii/category/463.aspx
      

  3.   

    用PickList列呀
    鼠标双击DBGrid出现列编辑器选中一列设为PickList就可以了。
      

  4.   

    PickList我用了,但是我往里面添加了三行汉字,但运行时它不显示呀,再说它怎么跟整数值关联呀?
      

  5.   

    使用songhtao(三十年孤独) 的方法就可以。
      

  6.   

    楼上的大哥,PickList我用了呀,可是不显示!我的MSN:[email protected],哪位高手愿意知道一下,谢谢!
      

  7.   

    procedure Tmain.ADOQuery1textmemoGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
        if sender.AsString='1' then text:='代表客'
        else if sender.AsString='2' then text:='代表货'
        else if sender.AsString='3' then text:='代表客货';
    end;procedure Tmain.ADOQuery1textmemoSetText(Sender: TField; const Text: String);
    begin
        if text='代表客' then sender.AsString:='1'
        else if text='代表货' then sender.AsString:='2'
        else if text='代表客货' then sender.AsString:='3';
    end;
    其中“textmemo”为adoquery1的一个字段名,gettext和settext是delphi自带的事件!
      

  8.   

    picklist的显示方法:把下列过程放入DBGrid1ColEnter事件中就可以自动显示了!
    procedure tmain.PickListDropDown;
    begin
      with DbGrid1 do
      if Columns[selectedindex].picklist.count > 0 then
      begin
        keybd_event(VK_MENU,0,0,0);
        keybd_event(VK_DOWN,0,0,0);
        keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
        keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
      end;
    end;
      

  9.   

    双击query控件,弹出一个字段编辑的框,把所有要显示的字段加近来,哪个字段你需要处理的就在那个字段onsettext或者ongettext事件里写  lixuebin2002(彬彬) 的代码。
      

  10.   

    顺便给你一个函数吧:
    ////////////////////////////////////////////////////////////////根据编号读字段名
    Function ReadTabByfield(Tabname,FieldNaReS,Val,FieldNaAim: string):string;
    begin
      try
         DataMod.PubADOQu.Close;
         DataMod.PubADOQu.SQL.Text := 'select '+FieldNaAim+' from '+Tabname+' where '+FieldNaRes+'='''+Val+'''';
         DataMod.PubADOQu.Open;
         Result :=   DataMod.PubADOQu.Fields.Fields[0].AsString;
         DataMod.PubADOQu.Close;
      except
        showMessage('读相关字典时出错了,空值返回并保存!');
        Result := '';
      end;
    end;