我做了DBGrid作为一个表的录入界面,录入收款纪录:
收款员ID、单号、金额另有一张表纪录收款员信息:收款员ID,姓名我想实现这样的效果,DBGrid中收款员一栏以收款员名字出现,比如说下拉列表,
录入收款单时录入人不必记忆收款人ID,直接能下拉列表选一下收款人姓名即可,即DBGrid为收款人(姓名)   单号    金额不知可否实现?

解决方案 »

  1.   

    在 dbGrid 里双击。再在,editing dbgrid1.columns 中选择要的栏
    再在pinklist 中添加就ok了!
      

  2.   

    当然可以实现了:
    参考一下://动态创建
    var
      a:TStringList;
      begin
        a:=TStringList.Create;
      with ADOQuery do
        begin
          Close;
          SQL.Clear;
          SQL.Text:='select * from Table1';
          Open;
          while not Eof do
            begin
              a.Add(FieldValues['姓名']);
              Next;
            end;
        end;
        dbgrid1.Columns[1].PickList:=a;
        a.Free;
      

  3.   

    把那一列的buttonstyle设为cbsauto,在picklist里输入数据即可。
      

  4.   

    pinklist加上收款员姓名?
    但在表里面想存入的是收款员ID,我如何让pinklist中姓名和ID自动对应上?
      

  5.   

    楼上的写的不错,能否提高一下执行效率
    SQL.Text:='select '姓名' from Table1';
      

  6.   

    //用于从数据库中得到数据时,转换显示procedure TForm1.ADOTable1idGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    begin
      case Sender.AsInteger of
        0: Text := '男';
        1: Text := '女';
        2: Text := '两性人';
      else
        Text := Sender.AsString;
      end;
    end;
      

  7.   

    用picklist肯定可以搞定 picklist应该是一个stringlist 至于你说的id和收款员姓名对应 自己写个函数就摆平了三 这个你应该没有问题把
      

  8.   

    我还是不太明白,我的问题是:录入人员录入时,用Picklist下拉列表,他选了收款员张三,如何存入表中的是张三的ID,而不是他的姓名?
      

  9.   

    可以呀,楼主,你可以这样:
    var
      id1:string;
    with ADOQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Text:='select ID from table1 where 姓名='''+dbgrid1.Fields[1].AsString+'''' //把你从Picklist下拉列表选取的姓名对应的ID取出来
      Open;
      id1:=FieldByName('ID').Asstring; //用这一变量存入你提取的ID号
      

  10.   

    http://218.56.11.178:8020/web/index.aspx->下载基地->例程-数据库/报表->在DBGRID中下拉列表的显示
      

  11.   

    在DBGrid 网 格 中 实 现 下 拉 列 表, 设 置 好DBGrid 中 该 字 段 的PickList 字 符 串 列 表、 初 始 的 序 号 值DropDownRows 即 可。 以 职 工 信 息 库 中 的 籍 贯 字 段( 字 符 串 类 型) 为 例, 具 体 设 计 步 骤 如 下: ---- 1、 在 窗 体 上 放 置Table1、DataSource1、DBGrid1、DBNavigator1 等 控 件 对 象, 按 下 表 设 置 各 个 对 象 的 属 性: 
        ---------------------------------------
        对象       属性          设定值
        ---------------------------------------
        Table1       DataBase         sy1
                         TableName        zgk.dbf   //职工信息库
        DataSource1  DataSet       Table1
        DbGrid1      DataSource    DataSource1
        DBNavigator1 DataSource   Datasource1
        ----------------------------------------------- 2、 双 击Table1, 在 弹 出 的Form1.Table1 窗 口 中, 用 右 键 弹 出 快 捷 菜 单, 单 击Add Fields 菜 单 项; 选 择 所 有 的 字 段 后, 按OK 按 钮。 ---- 3、 修 改 第2 步 新 增 字 段 的DisplayLabel 属 性。 以Table1ZGBH 字 段 为 例, 在Object Inspector 窗 口 中 选 择Table1ZGBH, 修 改 属 性DisplayLabel= 职 工 编 号, 其 余 字 段 类 似。 ---- 4、 双 击DBGrid1, 在 弹 出 的Editing DBGrid1.Columns 窗 口 中, 单 击Add all Fields 按 钮, 增 加Table1 的 所 有 字 段。 ---- 5、 在Editing DBGrid1.Columns 窗 口, 选 择jg 这 一 行, 切 换 到Object Inspector 窗 口, 修 改 它 的PickList.Strings 为“ 湖 北 枝 江 市
                       北 京 市
                       河 南 平 顶 山 市
                       浙 江 德 清 市” ---- 6、 在Form1.Oncreate 事 件 中 写 入 语 句: 
            ---- Table1.Open; ---- 7、F9 运 行, 用 鼠 标 点 击 某 个 记 录 的 籍 贯 字 段, 右 边 即 出 现 一 个 按 钮, 点 击 这 个 按 钮, 可 出 现 一 个 下 拉 列 表, 包 含 第5 步 中 输 入 的 四 行 字 符 串, 可 用 鼠 标 进 行 选 择。 当 然 也 可 以 自 行 输 入 一 个 并 不 属 下 拉 列 表 中 的 字 符 串。