夜
夜黑风高
Unregistered / Unconfirmed
GUEST, unregistred user!
我自己写了一个过程,在同一个dxdbgrid里根据不同的数据源添加不同的列
procedure TfrmMain.DrawGridHead;
var
i: integer;
Column: TdxDBTreeListColumn;
begin
dxdbgrid1.DataSource := dszkcl;
dxdbgrid1.Bands[0].Destroy;
dxdbgrid1.Bands[0] := dxdbgrid1.Bands.Add;
dxdbgrid1.Bands[0].Fixed := bfleft;
dxdbgrid1.DataSource.DataSet := dszkcl.DataSet;
with dxdbgrid1.DataSource.DataSet do
begin
for i := 0 to FieldCount - 1 do
if Fields.Visible then
begin
if fields.DataType = ftFloat then
begin
Column := dxdbgrid1.CreateColumn(TdxDBGridCurrencyColumn);
TdxDBGridCurrencyColumn(column).DisplayFormat := ',0.###;-,0.000';
end
else
Column := dxdbgrid1.CreateColumn(GetdxDBGridColumnClass(Fields));
Column.FieldName := Fields.FieldName; {列的名字等于字段的名字}
Column.Width := Fields.DisplayWidth;
Column.HeaderAlignment := taCenter;
end;
end;
//显示中文字段名,并设置字段宽度
dxdbgrid1.Columns[0].Caption := '策略代码';
dxdbgrid1.Columns[1].Caption := '策略名称';
dxdbgrid1.Columns[2].Caption := '策略类型';
if ViewRuleType = 'W' then
dxdbgrid1.Columns[3].Caption := '转换系数'
else
dxdbgrid1.Columns[3].Caption := '所需积分';
dxdbgrid1.Columns[4].Caption := '启用标记';
dxdbgrid1.Columns[5].Caption := '启用日期';
dxdbgrid1.Columns[6].Caption := '备注';
dxdbgrid1.Columns[0].width := 57;
dxdbgrid1.Columns[1].width := 53;
dxdbgrid1.Columns[2].width := 57;
dxdbgrid1.Columns[3].width := 55;
dxdbgrid1.Columns[4].width := 58;
dxdbgrid1.Columns[5].width := 57;
dxdbgrid1.Columns[6].width := 110;
end;
最后的一段代码是将英文的字段名显示为中文,并设置表格字段的宽度
问题是,第一次运行的时候显示的很正常,但是一旦切换数据源过程的后半段就失效了
dxdbgrid依旧显示的是数据库英文的字段名,宽度也是挤在一块,都没改过了
第一次运行也是调用这个相同的过程,请问是什么原因?
procedure TfrmMain.DrawGridHead;
var
i: integer;
Column: TdxDBTreeListColumn;
begin
dxdbgrid1.DataSource := dszkcl;
dxdbgrid1.Bands[0].Destroy;
dxdbgrid1.Bands[0] := dxdbgrid1.Bands.Add;
dxdbgrid1.Bands[0].Fixed := bfleft;
dxdbgrid1.DataSource.DataSet := dszkcl.DataSet;
with dxdbgrid1.DataSource.DataSet do
begin
for i := 0 to FieldCount - 1 do
if Fields.Visible then
begin
if fields.DataType = ftFloat then
begin
Column := dxdbgrid1.CreateColumn(TdxDBGridCurrencyColumn);
TdxDBGridCurrencyColumn(column).DisplayFormat := ',0.###;-,0.000';
end
else
Column := dxdbgrid1.CreateColumn(GetdxDBGridColumnClass(Fields));
Column.FieldName := Fields.FieldName; {列的名字等于字段的名字}
Column.Width := Fields.DisplayWidth;
Column.HeaderAlignment := taCenter;
end;
end;
//显示中文字段名,并设置字段宽度
dxdbgrid1.Columns[0].Caption := '策略代码';
dxdbgrid1.Columns[1].Caption := '策略名称';
dxdbgrid1.Columns[2].Caption := '策略类型';
if ViewRuleType = 'W' then
dxdbgrid1.Columns[3].Caption := '转换系数'
else
dxdbgrid1.Columns[3].Caption := '所需积分';
dxdbgrid1.Columns[4].Caption := '启用标记';
dxdbgrid1.Columns[5].Caption := '启用日期';
dxdbgrid1.Columns[6].Caption := '备注';
dxdbgrid1.Columns[0].width := 57;
dxdbgrid1.Columns[1].width := 53;
dxdbgrid1.Columns[2].width := 57;
dxdbgrid1.Columns[3].width := 55;
dxdbgrid1.Columns[4].width := 58;
dxdbgrid1.Columns[5].width := 57;
dxdbgrid1.Columns[6].width := 110;
end;
最后的一段代码是将英文的字段名显示为中文,并设置表格字段的宽度
问题是,第一次运行的时候显示的很正常,但是一旦切换数据源过程的后半段就失效了
dxdbgrid依旧显示的是数据库英文的字段名,宽度也是挤在一块,都没改过了
第一次运行也是调用这个相同的过程,请问是什么原因?