读取数据表,然后生成列可以不? //加载dbgrd procedure DbgrdCreate(const AQry:TADOQuery;const ADbgrd:TDBGridEh; const ATableName:string;const STFilter:Boolean; const ADataSource:TDataSource); var I:Integer; ConnectMode : string; begin readConnectMode(ConnectMode); with AQry do begin //查询字段名前清空上次的查询 Close; SQL.Clear ; SQL.Add('select * from FieldShow where TableName = '+ ''''+ATableName+''''+' order by ShowID '); Open ; I := AQry.RecordCount;
ADbgrd.Columns.Clear; while I > 0 do begin ADbgrd.Columns.Add; I := I-1; end; I := 0; //穷举数据条目,执行添加语句 while not Eof do begin with ADbgrd.Columns do begin //从数据表FieldShow中决定DBGird的所有列属性 Items[I].Visible := FieldByName('Show').AsBoolean ; Items[I].Title.Caption := FieldByName('Name').AsString ; Items[I].FieldName := FieldByName('field').AsString ; Items[I].Width := FieldByName('width').AsInteger; if FieldByName('DotSize').AsInteger = 2 then begin Items[I].DisplayFormat := '0.00'; end; if FieldByName('ShowButton').AsInteger = 1 then begin Items[I].AlwaysShowEditButton := True; Items[I].ButtonStyle := cbsEllipsis ; end; if STFilter = True then begin Items[I].STFilter.ListSource := ADataSource; Items[I].STFilter.ListField := FieldByName('field').AsString; end; end; I := I + 1 ; // ADbgrd.Columns.Count-1 可供改进算法的计数参数Count //往下添加 Next; end; end; //刷新表 ADbgrd.DataSource := ADataSource; // ADataSource.DataSet.Active := False; // ADataSource.DataSet.Active := True; end;
//加载dbgrd
procedure DbgrdCreate(const AQry:TADOQuery;const ADbgrd:TDBGridEh;
const ATableName:string;const STFilter:Boolean;
const ADataSource:TDataSource);
var
I:Integer;
ConnectMode : string;
begin
readConnectMode(ConnectMode); with AQry do
begin
//查询字段名前清空上次的查询
Close;
SQL.Clear ;
SQL.Add('select * from FieldShow where TableName = '+
''''+ATableName+''''+' order by ShowID ');
Open ;
I := AQry.RecordCount;
ADbgrd.Columns.Clear;
while I > 0 do
begin
ADbgrd.Columns.Add;
I := I-1;
end; I := 0;
//穷举数据条目,执行添加语句
while not Eof do
begin
with ADbgrd.Columns do
begin
//从数据表FieldShow中决定DBGird的所有列属性
Items[I].Visible := FieldByName('Show').AsBoolean ;
Items[I].Title.Caption := FieldByName('Name').AsString ;
Items[I].FieldName := FieldByName('field').AsString ;
Items[I].Width := FieldByName('width').AsInteger;
if FieldByName('DotSize').AsInteger = 2 then
begin
Items[I].DisplayFormat := '0.00';
end;
if FieldByName('ShowButton').AsInteger = 1 then
begin
Items[I].AlwaysShowEditButton := True;
Items[I].ButtonStyle := cbsEllipsis ;
end;
if STFilter = True then
begin
Items[I].STFilter.ListSource := ADataSource;
Items[I].STFilter.ListField := FieldByName('field').AsString;
end;
end;
I := I + 1 ; // ADbgrd.Columns.Count-1 可供改进算法的计数参数Count
//往下添加
Next;
end;
end;
//刷新表
ADbgrd.DataSource := ADataSource;
// ADataSource.DataSet.Active := False;
// ADataSource.DataSet.Active := True;
end;
直接Columns.Add; 就行啊
顶,不要把简单的问题复杂化,在FORMCreate里可以先初始化你的DBGRIDEH
但我不需要这种的我需要的是有2个字段 一个颜色 一个尺码我在程序复选框里勾上尺码 就会在DBGRIDEH后面增加个字段尺码 而且 还要以这类格式
10|20|30
40|50|60
70|80|90
| |然后我点一下 他就会变化 20|30|10
40|90|60
70|80|50
| |扩展统计吧不知道你们明不明白 我烦了几天的问题 我在做报表
后再设置相关的参数,比如说字段名,宽度等等
再帮你顶顶