酒店自制饮品:DBGRIDEH自动(标题)列宽

来源:百度文库 编辑:九乡新闻网 时间:2024/05/08 23:12:43
     //自动适应标题列宽
   function DBGridRecordSize(mColumn: TColumn): Boolean;
{ 返回记录数据网格列显示最大宽度是否成功 }
begin
Result := False;
if not Assigned(mColumn.Field) then Exit;
mColumn.Field.Tag := Max(mColumn.Field.Tag,
TDBGrid(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));
Result := True;
end; { DBGridRecordSize }function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 5): Boolean;
{ 返回数据网格自动适应宽度是否成功 }
var
I: Integer;
begin
Result := False;
if not Assigned(mDBGrid) then Exit;
if not Assigned(mDBGrid.DataSource) then Exit;
if not Assigned(mDBGrid.DataSource.DataSet) then Exit;
if not mDBGrid.DataSource.DataSet.Active then Exit;
for I := 0 to mDBGrid.Columns.Count - 1 do begin
if not mDBGrid.Columns[I].Visible then Continue;
if Assigned(mDBGrid.Columns[I].Field) then
mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
else mDBGrid.Columns[I].Width :=
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset;
mDBGrid.Refresh;
end;
Result := True;
end;
//自动适应标题列宽      //自动适应内容列宽   FUNCTION BLK(GRID1:TDBGRIDEH):STRING;//表列宽
var
  cc:integer;
  i,tmpLength:integer;
  objDataSet:TDataSet;
  aDgCLength:array of integer;
begin
  cc:=GRID1.Columns.Count-1;        //若报错,减2
  objDataSet:=GRID1.DataSource.DataSet;
  setlength(aDgCLength,cc+1);
  //file://取标题字段的长度
  for i:=0 to cc do
  begin
  aDgCLength[i]:= length(GRID1.Columns[i].Title.Caption);
  end;
  OBJDATASET.OPEN;
  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
  GRID1.Columns[i].Width:=aDgCLength[i]*7;
  end;
end; //自动适应内容列宽