有两个表table1和table2  :adotable
table1的字段:
  no  name   area    unit
数据源:datas1table2的字段:
  name_id  name_name
数据源:datas2记录的添加方式是在dbgrid1中实现。
    依次添加,记录添加到table1中。
    点击dbgrid1 中name标题下的空白框时,出现下拉列表框。其值为table2的name_name的所有值。不点选的情况下,记录默认为table2的第一记录。本人为新手,请不吝赐教。

解决方案 »

  1.   

    在dbgrid中就可以设置,双击dbgrid,选中你要得那行!你面有一个属性buttonstyle就可以设了!!!
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
     i:integer;
     a:TStringList;
    begin
     a:=TStringList.Create;
     table2.Open;
     for i:=0 to table2.RecordCount-1 do
     begin
         a.Add(table2.FieldValues['name_name']);
         table2.Next;
     end;
     dbgrid1.Columns[1].PickList:=a;
     a.Free;
    end;
      

  3.   

    半天才打开该网页属性buttonstyle
    请问设为哪个?cbsAuto、cbsEllipsis 还是 cbsNone?
      

  4.   

    对不起,应该设为cbsauto!
    然后在oncreate 或 onshow 加入inf的代码!
    我试过可以了
      

  5.   

    cbsellipsis 否定。出现三个小点的按钮触发事件。哪有下拉列表?
      不过感谢回复。
      

  6.   

    Inf(Inf) 谢了!试过基本可以实现!
    请问PickList能否有首先默认的值呢?一定要选择吗?
      

  7.   

    allan2002(丸子) 能说的详细些吗?
      

  8.   

    给你一个更好的办法:procedure Tfrmowercar.FormCreate(Sender: TObject);
    begin
      query1.Close;
         query1.sql.clear;
           query1.SQL.Add('select distinct name_name as a ');
           query1.SQL.Add('from table2') ;
          query1.SQL.Add('order by name_name ');
           query1.Open ;
     Table1.Active:=true;
      while not query1.eof do
         begin     dbgrid1.Columns[1].PickList:=a;
         query1.Next;
         end;end;