我看到有些DBGrid显示的字段下的值,有下拉菜单!是在怎么做到的?

解决方案 »

  1.   

    双击DBGrid,添加字段,选中一个字段,找到PickList属性,打开一个类似memo的窗口,输入即可。
      

  2.   

    那PickList下的值,能不能从另外一张表中的某一个字段下的值读入!?
      

  3.   

    动态给DBGrid的PickList赋值
    =============================
      放一个memo,假设另一张表用query2连接。
      memo1.clear;
      query2.Open;
      query2.First;
      while not query2.eof do
      begin
        memo1.Lines.AddStrings(query2['某个字段']);//必须是string型字段
        query2.next;
      end;  DBGrid1.Columns[1].PickList:=Memo1.Lines;
      

  4.   

    //在DBGrid的colEnter事件写下如下代码,即可实现下拉列表
    with DBGri1.selectedfield do
    if (FieldName='field1') then //field1下拉显示FieldMc值
         with adoquery1 do
         begin
           close;
           sql.Clear ;
           sql.Add('select distinct fieldmc from  table1 ');//信息来源表
           open;
           if recordcount>0 then
           begin
            first;
            with DBgrid1  do
            for j:=1 to FieldCount do
             if columns[j].FieldName ='fieldmc' then
             begin
              columns[j].PickList.Clear;
              for i:=1 to recordcount do
               begin
               columns[j].PickList.Add(fieldbyname('fieldmc').value);
               next;
               end;
               break;
             end;
           end;
           close;
         end;
      

  5.   

    添加Lookup字段也可以实现同样的效果,
    不过Lookup是针对query(Adoquery)实现的
    鼠标双击query(adoquery),鼠标单击右键,
    New Field设置Field type=Lookup
    然后设置相关属性即可!
      

  6.   

    双击DBGrid,添加字段,选中一个字段,找到PickList属性.....
    添加值,楼上newsofter(横空出世小霸王) 说得好全
      

  7.   

    picklist是可以实现你想要的功能,不过你会发现picklist在使用的时候并非那么的好用。首先,你必须选中有关的字段后再单击一下才能调出下拉框(可能是为了保证用户不至误操作而至),所以我一般不会使用这个属性。另外的办法是自己往dbgrid中添加(画)一个下拉框,这个在csdn上已经有很多帖子介绍过了,不过效果也是一般,尤其是当下拉框出现在dbgrid边缘的时候会出现超出的现象。最好的办法是使用第三方的控件,如1stclass等,他们的grid在这方面做的不错,当然也可以参考他们的方法自己修改dbgrid
      

  8.   

    自己画比较好,学习一下各个控件重要属性rect,你会受益匪浅!
      

  9.   

    给你介绍一本书
    delphi6数据库使用程序设计100例
    人民邮电出版社
    书上第一个例子就是你提出问题的
    还有过于dbgrid的排序问题
      

  10.   

    呵呵,来晚了,PickList属性,楼上的几位已经说得很全了
      

  11.   

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

  12.   

    如果是同一字段的不同记录动态改变list的内容呢????
      

  13.   

    刚刚试出来,同一字段的list改变在CellClick事物里写:
    ……;//ColEnter中sql的where 条件
    dbgNameColEnter(self);注意DBGird的options->dgindicator设为true
      

  14.   

    在form的oncreat事件是添加
    //动态添加dbgrid的picklist值;
    h:=0;
      with AdoQuery2 do
      begin
        first ;
        while not eof do
        begin
          DBGrid1.Columns[1].PickList.Add(FieldByName('机构名称').AsString);
          inc(h);
          next ;
        end;
      end;