我现在想把dbgrid其中的某个字段实现下拉,下拉的值是另外一个表中的字段的值,就是说我现在的dbgrid连的是数据源a,而下拉的值是要连数据源b,该怎么做呢,还请大家多多指教。 

解决方案 »

  1.   

    自定义一个TstringList 将你的字段值存入到TStringList中,再将表格的你要的那一列的 picklist属性设为 TStringList
      

  2.   

    也可以使用advstringgrid来实现 unit Unit1;interfaceuses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, Grids, BaseGrid, AdvGrid, StdCtrls;type
    TForm1 = class(TForm)
    AdvStringGrid1: TAdvStringGrid;
    Button1: TButton;
    procedure AdvStringGrid1GetEditorType(Sender: TObject; ACol,
    ARow: Integer; var AEditor: TEditorType);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    FCbo1,FCbo2:TStringList;
    public
    { Public declarations }
    end;var
    Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AdvStringGrid1GetEditorType(Sender: TObject; ACol,
    ARow: Integer; var AEditor: TEditorType);
    var
    I:Integer;
    begin
    with advstringgrid1 do
    case acol of
    1:begin
    aEditor:=edComboList;
    ClearComboString;
    combobox.items.Assign( FCbo1 );
    end;
    2:begin
    aEditor:=edComboList;
    ClearComboString;
    combobox.items.Assign( FCbo2 );
    end;
    end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    FCbo1:=TStringList.Create;
    FCbo2:=TStringList.Create;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    FCbo1.Free;
    FCbo2.Free;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    //控制item内容
    FCbo1.Add( '1' );
    FCbo1.Add( '2' );
    //控制item内容
    FCbo2.Add( '10' );
    FCbo2.Add( '20' );
    end;end.///你可以通过修改Button1Click内的实现来修改你的combobox内容