默認情況下,dbGrid的列寬時按照數據庫字段的大小來調整的,如果我們一個字段中的數據表較少,那麼看起來極不美觀,於是,我寫了一個函數來自動調整dbGrid的列寬:
函數如下:
//使dbGrid的內容自動適應他的寬度
procedure MakeDBGridColumnsAutoFixItsWidth(objDBGrid:TDBGrid);
var
cc:integer;
i,tmpLength:integer;
objDataSet:TDataSet;
aDgCLength:array of integer;
begin
cc:=objDbGrid.Columns.Count-1;
objDataSet:=objDbGrid.DataSource.DataSet;
setlength(aDgCLength,cc+1);
file://取標題字段的長度
for i:=0 to cc do
begin
aDgCLength[i]:= length(objDbGrid.Columns[i].Title.Caption);
end;
objDataSet.First;
while not objDataSet.Eof do
begin
file://取列中每個字段的長度
for i:=0 to cc do
begin
tmpLength:=length(objDataSet.Fields.FIElds[i].AsString);
if tmpLength>aDgCLength[i]
then aDgCLength[i]:=tmpLength;
end;
objDataSet.Next;
end;
for i:=0 to cc do
begin
objDbGrid.Columns[i].Width:=aDgCLength[i]*7;
end;
end;
簡單的測試了一下,效率還可以接受