///////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+变量名+垃圾回收机制)*知识点

    编程语言 从低级到高级的发展的过程 1.机器语言 计算机是基于电工作的.(基于高.低电平 1010010101011) 如果用机器语言表现一个字符的意思需要多段代码的行.但是计算机读取的快. 所以机器 ...

  2. 「HNOI2014」世界树

    题目链接 问题分析 首先观察数据范围可以知道要用虚树.但是要考虑怎么维护原树的距离信息. 如果只有两个关键点,我们可以很方便地找到中点将整棵树划分为两部分.而如果有多个关键点,看起来有效的方法就是多源 ...

  3. JVM GC之对象生死

    1.简述 在Java内存运行时区域的各个部分中,程序计数器.虚拟机栈.本地方法栈3个区域随着线程而生,随着线程而亡.栈中的栈帧随着方法的进入和退出而有条不紊的进行着入栈和出栈操作. 每个栈帧需要分配多 ...

  4. Java集合框架系列大纲

    ###Java集合框架之简述 Java集合框架之Collection Java集合框架之Iterator Java集合框架之HashSet Java集合框架之TreeSet Java集合框架之Link ...

  5. TCP连接建立 之 同时打开

    假设两台设备双方均发送syn给对端,在发送syn之后状态处于SYN_SENT状态,此时双方均收到对端的发来的syn,则立即进入SYN_RECV状态,并且都向对端回复syn+ack,在收到syn+ack ...

  6. Class 源码解读

    Class 获取包信息 /** * 获取此对象所在的包 * @revised 9 * @spec JPMS */ public Package getPackage() { // 原始类型和数组无 P ...

  7. js前台传数组,java后台接收转list,前后台用正则校验

    前台,传参数时,将数组对象转换成json串,后台java收到后用 JSONArray.fromObject 转成集合. 前台js:var params = {"FileNameList&qu ...

  8. 美化Eclipse-背景

    为了美化Eclipse,请登录主题网站http://www.eclipsecolorthemes.org/ 下载EPF配置文件(截图如下),并导入eclispe即可. 导入方法: (1)从File菜单 ...

  9. Nginx 代理TCP/UDP 端口

    Nginx 在1.9版本后新增TCP/UDP 代理 Nginx默认是没有开启TCP/UDP代理.需要在编译Nginx是添加--with-stream进行开启. 编译安装Nginx tar zxf cd ...

  10. Web jsp开发学习——dbcp jsp连接MySQL出现中文乱码解决

    开发过程中,通过dbcp.properties连接MySQL数据库,向数据库中插入中文字符时,出现乱码情况. 通过查阅资料,发现出现乱码的原因:MySQL数据库使用的是UTF-8编码,而dbcp.pr ...