dbgrideh+tquery如何设置下拉列表,谢谢!!!!!
如果改为dbgrideh+table就行,用table只要新建一个lookup字段,然后把dbgrideh的columns[0].allwayshoweditbutton改为true就行了。
但用query就不行,不知为什么?请各位高手帮帮忙!!!

解决方案 »

  1.   

    一种方法:在设计期间,设置Query的SQL属性和DataBaseName属性,然后Active:=True,就可以设计PickList了二种方法:运行期间:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with DBGrid1.Columns[0].PickList do begin
        Clear;
        Add('试一下');
        Add('OKOK?');
      end;
    end;
    我用DBGrid测试的,你自己改一下试试。
      

  2.   


    刚才在试用Lookup字段。以前一直用PickList,没想到Lookup字段这么不容易。
    奇怪,为什么Lookup字段创建成功并能添加,但无法下拉?
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: integer;
    begin
      Query1.Close;
      Query2.Close;
      Query1.DatabaseName := 'DBDEMOS';
      Query2.DatabaseName := 'DBDEMOS';
      Query1.SQL.Text := 'select * from animals';
      Query2.SQL.Text := 'select * from clients';
      Query2.Open;
      with TStringField.Create(Query1) do begin
        FieldName := 'NewF';
        FieldKind := fkLookup;
        DataSet := Query1;
        Name := 'Query1NewF';
        KeyFields := 'NAME';
        LookupDataSet := Query2;
        LookupKeyFields := 'LAST_NAME';
        LookupResultField := 'LAST_NAME';
        Lookup := True;
        Query1.FieldDefs.Add(Name, ftString, 10, false);
      end;
      Query1.Open;
    end;
      

  3.   

    OK,原来是阴沟里翻船,Query需要设置一个属性:  Query1.RequestLive := True;
    至此,楼主,我用2楼代码试验成功。要点是:1、设计阶段要把Query1中需要用到的字段全部添加(然后关闭Query1),其余全部代码实现。
      

  4.   

    关键是“Query1.RequestLive := True; ”。谢谢啦,已经解决了