//自动适应标题列宽
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; //自动适应内容列宽
|
|