DBGridEh列宽自动适应内容的简单方法

///Begin   Source   
   uses   
       Math;   
     
   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 ;    {   DBGridAutoSize   }   
   ///End   Source   
     
   ///Begin   Demo   
   procedure    TForm1 . DBGrid1DrawColumnCell(Sender:   TObject;    const    Rect:   TRect;   
       DataCol:    Integer ;   Column:   TColumn;   State:   TGridDrawState);   
   begin   
       DBGridRecordSize(Column);   
   end ;   
     
   procedure    TForm1 . Button2Click(Sender:   TObject);   
   begin   
       DBGridAutoSize(DBGrid1);   
   end ;   
   ///End   Demo 
 

  procedure TFm_ReadExcel.FormCreate(Sender: TObject);
  begin
    inherited;
    dbgrideh1.RowHeight:=15;
  end;

 
上述代表需要执行两次OPEN,才能看到效果

转载于:https://www.cnblogs.com/yclizq/p/11235896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值