//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了