读书人

大家好新手有关问题。请多帮忙

发布时间: 2012-02-17 17:50:42 作者: rapoo

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


[解决办法]
自定义一个TstringList 将你的字段值存入到TStringList中,再将表格的你要的那一列的 picklist属性设为 TStringList
[解决办法]
也可以使用advstringgrid来实现

unit Unit1;

interface

uses
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内容

读书人网 >.NET

热点推荐