如何在dbgrid中实现下拉列表选择功能,最好能提供代码

解决方案 »

  1.   

    双击DBGrid建立固定字段列表,然后选择想建立下拉菜单的字段,设置PickList属性(是一个TStrings),就可以实现下拉菜单!
      

  2.   

    一、DBGrid 中 的 下 拉 列 表
    ---- 在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 步 中 输 入 的 四 行 字 符 串, 可 用 鼠 标 进 行 选 择。 当 然 也 可 以 自 行 输 入 一 个 并 不 属 下 拉 列 表 中 的 字 符 串。 
      

  3.   

    其实写程序会比较灵活
    如, Columns[X],X代表列的序号,0为第一列  DBGrid1.Columns[1].PickList.Clear;
      DBGrid1.Columns[1].PickList.Add('唐僧');
      DBGrid1.Columns[1].PickList.Add('孙空');
      DBGrid1.Columns[1].PickList.Add('八戒');
      DBGrid1.Columns[1].PickList.Add('沙僧');
      

  4.   

    不知楼主想实现什么样的功能:1.下拉列表中只有几种固定的内容;
      (楼上说的就可以了)2.下拉列表中调出已经存在的所有本字段内容。
      DBGrid1.Columns[1].PickList.Clear;
      While Not query1.Eof Do
        Begin
          DBGrid1.Columns[1].PickList.Add(query1a.AsString);
          query1.Next;
        End;