设置DBGrid某列具有下拉列表框,下拉另一个DataSet的数据

//mxb列1添加下拉框项;mxb.Columns[1].PickList.;whilenotdataset.eofdobeg;mxb.Columns[1].PickList.;dataset.next;;end;;mxb.Columns[1].expanded=;//mxb列的按钮类型;mxb.Columns[1].ButtonSty;mxb.Column

//mxb列1添加下拉框项

mxb.Columns[1].PickList.clear;

while not dataset.eof do begin

mxb.Columns[1].PickList.add(dataset.fields[youindex].asstring);

dataset.next;

end;

mxb.Columns[1].expanded=true

//mxb列的按钮类型

mxb.Columns[1].ButtonStyle :=cbsAuto;

mxb.Columns[1].ButtonStyle :=cbsEllipsis;

mxb.Columns[1].ButtonStyle :=cbsNone

//dbgrid列添加下拉框代码

with DBGridEh1 do

begin

SelectedField.FieldName :='Field1';

I := SelectedIndex;

with AdoQuery1 do

begin

close;

sql.clear ;

sql.add(' select FieldMc from DictTable1 ');

open;

first;

Columns[i].KeyList.Clear;

Columns[i].picklist.Clear;

while not eof do

begin

Columns[I].KeyList.Add(fieldbyname('FieldMc').AsString);

Columns[I].PickList.Add(fieldbyname('FieldMc').AsString);

next;

end;

end;

Columns[i].AutoDropDown := true;

SelectedField := Columns[i].Field;

end;

其他方法

我是想要PICKLIST中的值从另一个表的某个字段获取,而不是直接在PICKLIST-->STRING ...中加入,而且在DBGRID中输入时只能从PICKLIST中选择

-----

假设你所说的"另一个表'为table2 ,"某个字段为ff".你的picklist 所对应的字段为kk

首先你放一个adoquery1 , sql.text:='select ff from table2'

然后双击你dbgrid 所对应的adoquery,新建一字段,设为lookup 字段,

keyfield 设为kk,dataset 设为adoquery1,lookup keys 设为ff,result field设为ff

完了后,把这个新建的字段的lookupcache设为true

把这个这段放到dbgrid 里,就OK了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值