如何根据其内容自动调整/缩放 DBGrid(或其他类似)的列宽度?

2023-11-22

我正在尝试制作一个框架DBGrid它将服务于 10 个以上的表,其中一半字段为默认值,其他字段为每个表独有。

由于列的空间有限,并且我不想手动配置每个表的每一列,因为这是质量非常差的工作,我想知道一种通过其中行的最大内容来计算每列的宽度的方法列,由自己的组件或数据集测量。

有谁知道路吗?世界上有没有具有这种功能的定制组件?我需要一个根据网格所有可见列中的可见数据实现大小增加和减小的解决方案。到目前为止,我的解决方案在选定单元格的绘制方面存在问题,女巫跳出了选定的数据集行。

enter image description here


注意:请不要关闭我的问题。它与网格宽度或表单宽度的配合无关。它是关于所有列的宽度,以最小化水平滚动条,但不一定隐藏它。


您所要做的就是使用网格的画布来测量每列的内容并相应地设置列的宽度。您可以迭代数据集或使用 OnColumnDraw-Event 动态调整宽度。

这是一个示例(我必须使用 5 像素的偏移量)

procedure TForm7.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
  w : Integer;

begin
  w := 5+DBGrid.Canvas.TextExtent(Column.Field.DisplayText).cx;
  if w>column.Width then Column.Width := w;
end;

procedure TForm7.FormActivate(Sender: TObject);
Var
  i : Integer;

begin
  // Initialize width
  for I := 0 to DBGrid.Columns.Count - 1 do
    DBGrid.Columns[i].Width := 5 + DBGrid.Canvas.TextWidth(DBGrid.Columns[i].title.caption)
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据其内容自动调整/缩放 DBGrid(或其他类似)的列宽度? 的相关文章

  • 我应该定义索引(A)和索引(B),还是索引(A,B),或者两者都定义?

    在我的表中 我有两个密切相关的列 A 和 B 我应该考虑哪些因素来决定是否创建 索引 A 和索引 B 索引 A B 以上两者 如果我 仅使用类似的查询where A 5 and B 10 并且从不喜欢where A 5 也可以使用类似的查询
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • SQL Server 批量插入 - “批量加载数据转换错误”

    bulk insert dbo A FROM d AData csv WITH FIELDTERMINATOR ROWTERMINATOR n 将批量数据插入数据库时 在检查可疑数据后 我遇到了无法解释的错误 消息 4867 16 级 状态
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • 如何在Delphi中显示Vista风格的气球提示?

    在输入验证时 我使用气球提示而不是消息框 我的问题是 在 Vista 上 它们具有带圆角的旧 XP 样式 而不是较新的矩形外观 我尝试使用 CreateWindowEx 创建它们并且tooltips class32或使用 SendMessa
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • 如何在文件系统中存储图像

    目前 我已将图像 最大 6MB 作为 BLOB 存储在 InnoDB 表中 随着数据大小的增长 夜间备份变得越来越慢 阻碍了正常性能 因此 二进制数据需要进入文件系统 指向文件的指针将保存在数据库中 数据具有树状关系 main site u
  • 通过套接字发送动态数组(在记录内)?

    我正在尝试直接使用 SendBuf 将记录从服务器传输到客户端 但是 该记录有一个动态数组的成员 并且我在某处 在 SOF 中 读到 发送记录时 成员必须是静态的 固定长度 但问题是 我无法确定如何我会 将来 发送许多论点 我怎么解决这个问
  • Android中不同线程的数据库访问

    我有一个在 AsyncTasks 中从互联网下载数据的服务 它解析数据并将其存储在数据库中 该服务持续运行 当服务写入数据库时 活动会尝试从数据库中读取更改 我有一个数据库助手 有多种写入和读取方法 这会导致问题吗 可能尝试从两个不同的线程
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • 什么是“数据库实体”以及哪些类型的 DBMS 项目被视为实体? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么 Delphi 中的 ADO Next 记录处理速度变慢?

    我有一个多年前开发的 Delphi 4 程序 它使用Opus 直接访问 http sourceforge net projects directaccess 按顺序搜索 Microsoft Access 数据库并检索所需的记录 Delphi
  • 表与多个表具有一对一的关系

    1 一个表可以和多个表建立一对一的关系吗 为了更清楚地说明 如果我想做插入 第一个表将受到影响并且 只有一张其他表会受到影响 2 如果是这样 主键将如何 3 另外 如果我想检索多条记录 查询会是什么样子 从这些表中 谢谢 一个表可以和多个表
  • CharInSet 不适用于非英文字母?

    我已经将应用程序从 Delphi 2007 更新到 Delphi 2010 一切都很顺利 除了一条编译正常但不起作用的语句 If Edit1 Text 1 in S then ShowMessage Found else ShowMessa
  • 使用 PutBlock 并将字节数组全部设置为零的 EIPHTTPProtocolExceptionPeer 异常

    使用 Delphi XE2 Update 3 我在将零字节块上传到 Azure 时遇到问题 当我说零字节时 我指的是每个元素设置为零的字节数组 不是零长度 例如 var ConInfo TAzureConnectionInfo RespIn
  • SQLite 仅当值不为空时更新列

    Query UPDATE item table SET field1 field1 spanish field2 field2 spanish 问题 我怎样才能更新field1 with field1 spanish ONLY if fie
  • 如何修复 pgbackups 错误:备份 url 无效?

    我正在尝试按照迁移到 Cedar 的说明进行操作 除了我进行了重大重写 因此这不是前一个应用程序的分支 而是一个单独的分支 并停留在数据库迁移步骤 我安装了 pgbackup 和 heroku postgresql 插件 但得到了这个结果

随机推荐

  • 可以从 Google 地图 API 中提取行程预计到达时间吗?

    是否可以从两个地址点之间的谷歌地图 API 获取行程预计到达时间 以分钟为单位 和交通数据 有谁知道ETA值是否反映了交通状况 谷歌有一个距离矩阵API返回两个 或多个 点之间的距离和行进时间 可以指定为 lat lng 或地址 我不认为它
  • Spring Boot Tomcat 配置,从容器迁移到嵌入式

    我正在将用于在 Tomcat 容器中运行的 Spring Boot 应用程序迁移到运行嵌入式 Tomcat 的 Spring Boot 应用程序 我的旧 Tomcat 配置在 server xml 中有以下配置
  • 生产中的 CouchDB

    我一直在一些原型应用程序上使用 CouchDB 它非常出色 非常易于使用并且速度非常快 我想知道是否有人在生产中使用过它 并对它的可靠性 操作管理的性能适用性等有什么看法 我正在考虑使用它来支持服务层并利用其复制功能 任何评论 经验都将受到
  • 将焦点设置在 元素上

    我正在使用 Angular 5 开发前端应用程序 我需要隐藏一个搜索框 但单击按钮后 应该显示搜索框并聚焦 我已经尝试了在 StackOverflow 上找到的一些带有指令的方法 但无法成功 这是示例代码 Component selecto
  • Bootstrap 轮播 - YouTube 视频播放时暂停

    我的 Bootstrap 轮播中有一些嵌入的 YouTube 视频 默认情况下 轮播会自动前进 但我想在视频播放时暂停 有没有什么技巧可以检测视频何时播放 如果可能的话 我希望不使用 YouTube API 来完成此操作 每个轮播都有任意数
  • 如何从字符串中删除所有字符

    如何使用 JavaScript 正则表达式从字符串中删除所有非字母字符 您可以使用replace method Hey The 123 sure is fun replace A Za z g gt gt gt HeyThesureisfu
  • 使用 django-axes 登录 Django

    我用 django 创建了一个网站 用户应该能够登录 登录视图如下所示 from django contrib auth import authenticate login from django contrib auth models i
  • 如何让JFrame透明?

    如何让JFrame透明 我想让我的 JFrame 透明 当我的 JFrame 位于背景之上时 用户应该看到背景 我找到了另一个解决方案 将框架的背景颜色设置为 Set the frame background color to a tran
  • scikit-learn 中带有 BaseEstimator 的 GradientBoostingClassifier?

    我尝试在 scikit learn 中使用 GradientBoostingClassifier 它使用默认参数可以正常工作 但是 当我尝试用不同的分类器替换 BaseEstimator 时 它不起作用并给出以下错误 return y np
  • Slick/Scala:什么是 Rep[Bind] 以及如何将其转换为值?

    我正在尝试找出 Slick Scala 函数关系模型 我已经开始在 Slick 3 0 0 中构建原型 但是当然 大多数文档要么已过时 要么不完整 我已经成功地达到了可以创建模式并从数据库返回对象的程度 问题是 我返回的是 Rep Bind
  • (如何)使用 LLVM 机器代码分析器预测代码片段的运行时间?

    我使用 llvm mca 来计算总周期一段代码 认为他们会预测它的运行时间 然而 动态测量运行时间几乎没有相关性 所以 为什么 llvm mca 计算的总周期不能准确预测运行时间 我可以使用 llvm mca 以更好的方式预测运行时间吗 D
  • 将 std::enable_if 与匿名类型参数一起使用

    我尝试使用std enable if使用未使用和未命名的类型参数 以免扭曲return类型 但是 以下代码无法编译 include
  • int8_t、int_least8_t 和 int_fast8_t 的区别?

    int类型有什么区别int8 t int least8 t and int fast8 t Carl Norum 引用的 C99 标准部分定义了差异 但举个例子可能会有用 假设您有一个用于 36 位系统的 C 编译器 其中char 9 位
  • Windows 窗体应用程序 - 视觉风格?

    我会尽量保持简单 在 Windows 窗体应用程序中创建的按钮如下所示 如果我手动创建表单 我创建的按钮将如下所示 我彻底查看了 Windows 窗体应用程序 发现没有任何代码可以更改按钮的视觉样式 对于为什么会发生这种情况有任何简单的解释
  • jupyterlab交互图

    使用旧的 Jupyter 笔记本 我可以通过以下方式创建交互式绘图 import matplotlib pyplot as plt matplotlib notebook x 1 2 3 y 4 5 6 plt figure plt plo
  • 具有透明背景的html画布运动模糊

    我刚刚使用廉价的运动模糊创建了一个精美的画布效果 ctx fillStyle rgba 255 255 255 0 2 ctx fillRect 0 0 canvas width canvas height 现在我想做同样的事情 但背景透明
  • 视野如何改变立体视觉中的深度估计?

    我正在尝试估计带有两个摄像头的立体系统的深度 我使用的简单方程是 Baseline Focal Depth Disparity 两个摄像头的视野不会改变允许的最大深度 它只改变可测量的最小深度 在顶端 可测量的深度受到您使用的相机分辨率的限
  • Java - 如何将由空格分隔的整数读入数组

    我的项目遇到了麻烦 因为我无法正确开始 即从用户处读取一行由空格分隔的整数 并将这些值放入数组中 System out println Enter the elements separated by spaces String input
  • Nginx:设置默认文件扩展名

    我应该对 nginx 使用什么规则 以便我的默认文件扩展名是 php 我目前使用 www mywebsite com 访问页面home php但我只想使用 www mywebsite com home Thanks 假设您还想提供静态文件
  • 如何根据其内容自动调整/缩放 DBGrid(或其他类似)的列宽度?

    我正在尝试制作一个框架DBGrid它将服务于 10 个以上的表 其中一半字段为默认值 其他字段为每个表独有 由于列的空间有限 并且我不想手动配置每个表的每一列 因为这是质量非常差的工作 我想知道一种通过其中行的最大内容来计算每列的宽度的方法