zoukankan      html  css  js  c++  java
  • 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,才能看到效果
  • 相关阅读:
    Elasticsearch节点下线(退役)and unassigned shards
    详解Hbase架构原理
    docker安装(yum方式)
    矩形的逆时针蛇形填数
    CentOS7安装iptables防火墙
    Linux:-bash: ***: command not found
    两个大数相乘JAVA版
    SQL Server 2012时出现命名管道提供程序: 无法打开与 SQL Server 的连接
    jstl函数库及自定义函数库
    This Android SDK requires Android Developer Toolkit version 23.0.0 or above
  • 原文地址:https://www.cnblogs.com/yclizq/p/11235896.html
Copyright © 2011-2022 走看看