函数: procedure etoc (dataset: Tdataset; Query: TQuery); var i:integer; ii:integer; mystr:string; begin mystr:= #39+dataset.Fields[0].DisplayLabel+#39 ; for i:=1 to dataset.FieldCount-1 do begin mystr:=mystr+','+#39+dataset.Fields[i].DisplayLabel+#39; end; query.Close; query.SQL.Clear; query.SQL.Add('select fdname,chnname from fldlist'); query.SQL.Add('where fdname in ('+mystr+')'); query.Prepare; query.Open; for i:=0 to dataset.FieldCount-1 do begin ii:=0; query.First; while ii < query.RecordCount do begin ii:=ii+1; if dataset.Fields[i].DisplayLabel=query.Fields[0].AsString then begin dataset.Fields[i].DisplayLabel:=query.Fields[1].AsString ; ii := query.RecordCount ; end else begin query.Next; end; end; end; end;
(1)假设我们采用的是TTable控件,那么用鼠标右键点击它,在弹出菜单上选择Fields Editor...菜单项,加入所有的字段,然后在编辑对话框中选中某个字段,并且Object Inspect窗口了修改DisplayLabel属性为中文字段名就可以了。
(2)右键点击TDBGrid,然后选择Columns Editor...菜单项,加入必要数量的Column,然后使用属性编辑器,为每一个Column的FieldName属性选择相应的字段,同时修改Title.Caption为中文字段名就可以了。
这样不如在数据库中键一表fildlist(字段列表),其中一列记录英文一列记录中文。
然后做一个转换函数,用时一替换就ok了。
procedure etoc (dataset: Tdataset; Query: TQuery);
var
i:integer;
ii:integer;
mystr:string;
begin
mystr:= #39+dataset.Fields[0].DisplayLabel+#39 ;
for i:=1 to dataset.FieldCount-1 do
begin
mystr:=mystr+','+#39+dataset.Fields[i].DisplayLabel+#39;
end;
query.Close;
query.SQL.Clear;
query.SQL.Add('select fdname,chnname from fldlist');
query.SQL.Add('where fdname in ('+mystr+')');
query.Prepare;
query.Open;
for i:=0 to dataset.FieldCount-1 do begin
ii:=0;
query.First;
while ii < query.RecordCount do begin
ii:=ii+1;
if dataset.Fields[i].DisplayLabel=query.Fields[0].AsString then begin
dataset.Fields[i].DisplayLabel:=query.Fields[1].AsString ;
ii := query.RecordCount ;
end else begin
query.Next;
end;
end;
end;
end;