///////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,才能看到效果

DBGridEh列宽自动适应内容的简单方法的更多相关文章

  1. saiku导出excel单元格格式与中文列宽自动适应

    在saiku导出excel后打开发现单元格的整数也显示为小数,并且含有中文的列宽没有自动适应,解决办法如下: 打开ExcelWorksheetBuilder.java文件,找到applyCellFor ...

  2. 纯css实现div三列等高布局的最简单方法简化版/也可以多列

    使用正padding和负margin对冲实现多列布局方法 这种方法很简单,就是在所有列中使用正的上.下padding和负的上.下margin,并在所有列外面加上一个容器,并设置overflow:hid ...

  3. 关于web开发中订单自动超时和自动收货的简单方法(window server)

    最近做一个订单自动超时和自动收货的功能,因为以前是用的mysql 存储过程和定时器来完成,这次的业务逻辑相对复杂用以前的方式就不太合适,本来是准备使用定时执行php脚本来实现的,后来发现业务逻辑中使用 ...

  4. Java 设置Excel自适应行高、列宽

    在excel中,可通过设置自适应行高或列宽自动排版,是一种比较常用的快速调整表格整体布局的方法.设置自适应时,可考虑2种情况: 1.固定数据,设置行高.列宽自适应数据(常见的设置自适应方法) 2.固定 ...

  5. (几乎)完美实现 el-table 列宽自适应

    背景 Element UI 是 PC 端比较流行的 Vue.js UI 框架,它的组件库基本能满足大部分常见的业务需求.但有时候会有一些定制性比较高的需求,组件本身可能没办法满足.最近在项目里就碰到了 ...

  6. MS WORD 表格自动调整列宽,自动变漂亮,根据内容自动调整 .

    在MS WORD中,当有大量的表格出现时,调整每个表格的的高和宽和大小将是一件非常累的事情,拖来拖去,非常耗时间,而且当WORD文档达到300页以上时,调整反应非常的慢,每次拖拉线后,需要等待一段时间 ...

  7. 关于OpenXml SpreadSheet列宽根据内容的Auto-suitability

          因为之前接到的一个需求,让excel的宽度自动适应.所以最近一直在看Excel相关内容,从结构到.net的两个类库OpenXml和Office.Interop.Excel,再到一些具体的使 ...

  8. 【Qt开发】QTableWidget设置根据内容调整列宽和行高

    QTableWidget要调整表格行宽主要涉及以下一个函数 1.resizeColumnsToContents();                      根据内容调整列宽            ...

  9. MS WORD 表格自己主动调整列宽,自己主动变美丽,依据内容自己主动调整

    在MS WORD中,当有大量的表格出现时,调整每一个表格的的高和宽和大小将是一件很累的事情,拖来拖去,很耗时间,并且当WORD文档达到300页以上时,调整反应很的慢,每次拖拉线后,须要等待一段时间其才 ...

随机推荐

  1. 使用Python画一朵玫瑰花

    # -*- coding: utf-8 -*- # @Time : 18-9-14 下午12:47 # @Author : Felix Wang from turtle import * import ...

  2. 十大免费SSL证书:网站免费添加HTTPS加密

    SSL证书,用于加密HTTP协议,也就是HTTPS.随着淘宝.百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书 ...

  3. Vue 新手学习笔记:vue-element-admin 之安装,配置及入门开发

    所属专栏: Vue 开发学习进步 说实话都是逼出来的,对于前端没干过ES6都不会的人,vue视频也就看了基础的一些但没办法,接下来做微服务架构,前端就用 vue,这块你负责....说多了都是泪,脚手架 ...

  4. ERROR 1130 (HY000): Host 'test177' is not allowed to connect to this MySQL server

    异常 在测试环境新搭建的MySQL服务端,启动后登陆MySQL如下异常: [root@test177 ~]# mysql -u root -po2jSLWw0ni -h test177 mysql: ...

  5. 关于开发APP接口版本不兼容的问题

    关于 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改. 新的APP和接口开发后,接口如何兼容老的APP? 有的公司 每次发布完APP ...

  6. 开启两个线程,一个线程打印A~Z,一个线程打印1~52的数据

    开启两个线程,一个线程打印A-Z,一个线程打印1-52的数据 import java.util.concurrent.locks.Condition; import java.util.concurr ...

  7. Mac 10.15 关闭SIP

    升级Mac后SIP开启了,根目录不能创建文件了 关闭 sip,终端输入 sudo mount -uw / 在我们开发过程中,有时候我们安装一些工具软件需要将文件拷贝到系统限制更改的文件夹中,甚至有时需 ...

  8. CentOS 安装 Mongodb详解 --- 无Linux基础

    先去官方下载离线安装包:https://www.mongodb.com/ ftp连接一下服务器,把离线包上传上去 XShell连接一下: 解压文件(你输一点就可以按tab键,它会自动补全):tar - ...

  9. 大牛们是如何开发 WordPress 主题的?

    自己算是写过一个主题,目前也在用( 这里 -> http://udonmai.com/ ),所以多少想说两句. 当初走上web开发的路之后最想干的事情就是写个自己的WP主题...所以网上搜罗了很 ...

  10. python 中 __dict__函数的使用

    class F: def __init__(self, name, age): self.name = name self.age = age obj = F('tom', 20)s = obj.__ ...