登陆

DbGrid适应宽度

Delphi代码
  1. uses  
  2. Math;   
  3.   
  4. function DBGridRecordSize(mColumn: TColumn): Boolean;   
  5. { 返回记录数据网格列显示最大宽度是否成功 }  
  6. begin  
  7. Result := False;   
  8. if not Assigned(mColumn.Field) then Exit;   
  9. mColumn.Field.Tag := Max(mColumn.Field.Tag,   
  10.     TDBGrid(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));   
  11. Result := True;   
  12. end{ DBGridRecordSize }  
  13.   
  14. function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 5): Boolean;   
  15. { 返回数据网格自动适应宽度是否成功 }  
  16. var  
  17. I: Integer;   
  18. begin  
  19. Result := False;   
  20. if not Assigned(mDBGrid) then Exit;   
  21. if not Assigned(mDBGrid.DataSource) then Exit;   
  22. if not Assigned(mDBGrid.DataSource.DataSet) then Exit;   
  23. if not mDBGrid.DataSource.DataSet.Active then Exit;   
  24. for I := 0 to mDBGrid.Columns.Count - 1 do begin  
  25.     if not mDBGrid.Columns[I].Visible then Continue;   
  26.     if Assigned(mDBGrid.Columns[I].Field) then  
  27.       mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,   
  28.         mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset   
  29.     else mDBGrid.Columns[I].Width :=   
  30.       mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset;   
  31.     mDBGrid.Refresh;   
  32. end;   
  33. Result := True;   
  34. end{ DBGridAutoSize }  
  35. ///////End Source   
  36.   
  37. ///////Begin Demo   
  38. procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;   
  39. DataCol: Integer; Column: TColumn; State: TGridDrawState);   
  40. begin  
  41. DBGridRecordSize(Column);   
  42. end;   
  43.   
  44. procedure TForm1.Button1Click(Sender: TObject);   
  45. begin  
  46. DBGridAutoSize(DBGrid1);   
  47. end;  

« 上一篇 | 下一篇 »

访客评论

JackFans
至少还知道这个是delphi程序的源码~~
Post by 小喜 on 2008, August 21, 10:02 AM #1