手头上有一个项目,客户要求对表格(DBGRID)中的数据进行选取打印.我准备在DBGRID中增加一列(CHECKBOX)按钮,让用户进行选择.可怎样实现呢.1、我尝试着在ADODataSet加入NewField,可显示出的数据无法修改. 还有一个最笨的办法,就是在数据中加入一个字段(是否打印),难道这是 唯一的办法吗,请您指点.2、增加一列(CHECKBOX)按钮,我准备用DBGRID的第三方控件,如果您有更 好的办法(不使用第三方控件,即使麻烦也没关系),请赐教.
分不够,您说话 :)
分不够,您说话 :)
不知道明白了没有。
说的详细点吗。
这样就多出一列作为checkcolumn
2、设置adodataset为batchmode
这样对于selected列进行的修改就不会马上往数据库保存,也就不会出错。
或设置selected列的providerflag去掉pfinupdate也许可以。:)
3、点选了checkbox后,打印前对adodataset用filter filter:= 'selected=1'
这样就能过滤出所有选择了的信息,最好先克隆再对克隆的数据集过滤。good luck
以下代码权作参考[adsTest: TADODataSet]:
var
i: Integer;
begin
with adsTest.FieldDefs.AddFieldDef do
begin
Name := 'spring'; {字段名}
Size := 8; {长度}
DataType := ftString; {字段类型}
end;
with adsTest.FieldDefs.AddFieldDef do
begin
Name := 'autumn';
Size := 8;
DataType := ftString;
end;
adsTest.CreateDataSet; {至此,临时表创建字段完成,下面填充内容}
adsTest.Open;
for i := 0 to 12 do
begin
adsTest.Append;
adsTest.FieldByName('spring').AsString := 'Spring ' + IntToStr(i);
adsTest.FieldByName('autumn').AsString := 'Autumn ' + IntToStr(i);
adsTest.Post; {以上区间代码为添充之内容,你可以在这里处理,填入你
想要填充的内容,在:=右边;内容可来自多表所选出}
end;
end; 然后你可用此ADODataSet为数据集进行操作了,和一般DataSet如ADOQuery操作相同