首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TDBGrid控件中怎么出现类似TDBComboBOX的下拉框

2012-02-26 
TDBGrid控件中如何出现类似TDBComboBOX的下拉框?如题所示 本人想做个简单的录入 但是其中有几个字段是从其

TDBGrid控件中如何出现类似TDBComboBOX的下拉框?
如题所示 本人想做个简单的录入 但是其中有几个字段是从其他表里取出数据 用类似下拉框来选择 来填上的,现在本人不知道如何在TDBGRID控件实现下拉框的功能(反正想在TDBGrid中出现下拉框)?
想用TDBgrid+TTable+Datasource 完成,Ttable的属性TableName 为录入记录存放的地方,其中TDBGrid里有几个字段从别的表里取,用下拉框显示,由用户选择.

现在我已经知道怎么在tdbgrid中出现下拉框了 只需在tdbgrid中添加字段后 利用picklist属性则可。
现在又又问题:下拉框的值(若此对应字段为水果) 比如 苹果,梨,香蕉...等等,也就是说picklist里的值应该是动态的 不应该写死在picklist属性 而是应该通过比如Tquery控件从相关的表把水果种类查出来后 再付给picklist的。问题是我用Tquery控件查出来后,无法付给picklist属性,因为picklist属性为Tstring型,而 Tquery查出来的字段值是String型,不匹配。哎呀!怎么弄才好呢?

请大家指点迷津啊

[解决办法]
var abc:strings;
begin
abc:='苹果';//这个是你自己的东西
dbgrid1.columns[4].picklist.add(abc);

end;
[解决办法]
呵呵.....

条条大路通罗马

只是以前看到某本书上写的dbgrid下拉框居然是用在点的地方去create combobox的控件,当时我就郁闷了
dbgrid的功能自已没研究好居然去写书,还误导读者,实在是不应该啊
[解决办法]
自己写个过程 用到的地方调用一下不就行了?比如
procedure SetGridCbx(sSQL: string; cbx: TColumnEH; conn: TADOConnection;
bAllowNull: Boolean=False; sNullValue: string=''; sNullItem:string='');
var
Tmp: TADOQuery;
begin
Tmp := TADOQuery.Create(Nil);
try
with Tmp do
begin
Connection := conn;
Close;
SQL.Clear;
SQL.Add(sSQL);
Open;
First;
if bAllowNull then
begin
cbx.PickList.Add(sNullItem);
cbx.KeyList.Add(sNullValue);
end;
while not Eof do
begin
cbx.PickList.Add(Fields[0].AsString+'|'+Fields[1].AsString);
cbx.KeyList.Add(Fields[0].AsString);
Next;
end;
end;
finally
Tmp.Close;
Tmp.Free;
end;
end;


用到的时候
SetGridCbx('select WJXX_KJBH,WJXX_KJMC from WJXX order by WJXX_KJBH ',DBGridEh.FieldColumns['KJZMX_KJBH'],Self.DBConnect,True);
就可以从数据表中获取值 给 picklist
[解决办法]
begin
dbgrid1.coloumn[0].picklist.cliear;
query1.first;
repeat
dbgrid1.coloumn[0].picklist.add(query1.fieldbyname('水果').asstring);
query1.next;
until query1.eof;
end;

热点排行