问题标签 [tdbgrid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2210 浏览

delphi - 如何**修复** DBGrid 标题高度的值?

当用户选择我的网格的标题时,我想加粗网格的列标题。
我使用以下代码来实现这一点:

这段代码工作正常。

OnFormCreate我定义了以下标题高度:

当我单击标题时,程序InternalLayout.MeasureTitleHeights会将大小更改回原来的大小。因此,每次更改字体样式时,我都需要重新定义RowHeight[0].

代码如下所示:

当用户重新定义 Column 的宽度时,还有另一个问题,在这种情况下,它RowHeight[0]也会返回到原始值。我想解决这个问题的唯一方法是继承 DBGrid 和 override ColWidthsChanged,但是我还要重写多少方法?

为什么会发生这种情况?
这是一个错误,还是我的代码有问题?
有没有办法解决这个问题?

在一个简单的问题中。

如何修复DBGrid 标题高度的值?

0 投票
3 回答
3007 浏览

mysql - 有没有比这更好的方法来阻止 DBgrid 闪烁耗时的更新?

谁能提供有关如何在以下情况下实现我想要的建议?(我想知道theads是否会有所帮助,但以前没有使用过它们。)

在我的 Delphi 应用程序中,我有一个通过 Internet 针对外部 MYSQL 数据库运行的查询。查询的结果显示在 DBGrid 中(最多 50 行)。

用户单击按钮进行“网络检查”,然后发生以下情况......

  • 首先,我将数据集的一个字段 (web_response) 设置为空字符串,以清除 DBGrid 中显示的任何现有数据。

  • 然后对于数据集中的每一行,我提取一个字段 (FieldA) 的值,将其传递给一个函数,并将另一个字段 (web_response) 的值设置为该函数的结果。

  • 该函数本身使用 IdHTTP 使用传递的参数在不同的远程网站上执行搜索,并返回一个响应字符串。该过程大约需要 1 到 2 秒。

我想要的效果是让网格“立即”清除所有 Web 响应字段,然后逐行将 Web 响应字段设置为一个值,每个值都按设置显示。

下面的代码可以正常工作,但不能完全给出我需要的效果。我想知道是否在某处使用线程 - 而不是 application.processmessages 可能会改善事情。

我现在得到的效果是网格完全空白一两秒钟,然后重新出现,网络响应列空白。然后,这些行会以大约每 1 秒一行的速度使用 Web 响应进行更新,但每次添加新响应时,网格都会剧烈闪烁。如果线程没有帮助,有没有更好的方法来做我正在做的事情?

我目前使用的代码(更改了标识符以保护无辜者)

0 投票
2 回答
14374 浏览

delphi - 项目中所有 DBGrid 的 Delphi DBGrid 交替行颜色

我怎样才能使我的所有网格在我的表单中看起来都一样?我想实现必须应用于我项目的所有网格的备用行颜色。是否可以不为每个网格添加相同的 DrawColumnCell 事件代码?我想避免为每个网格添加相同的代码。我的项目中有 30 个网格,乘以 13 行代码,它只是为我的项目添加了很多代码行,使其“不友好”。我正在寻找一种解决方案,它只会在项目中添加 13 行代码,而不是 390 行。

我的格式化代码如下所示(例如):

可能我需要以某种方式扩展 DBGrid,但我不知道如何或如何在谷歌上寻找解决方案

我试图破解每个表单中的 DBGRid,如下所示:

我可以这样做,但我无法访问发件人,因此我可以访问数据集并知道要着色的记录和不着色的记录(奇数和偶数)。无论如何,这是一种糟糕的方法,因为我必须在每种形式上都这样做,所以这不是一个真正的解决方案

有任何想法吗?

谢谢

0 投票
3 回答
3624 浏览

delphi - 在其 OnDrawColumnCell 处理程序是通用的网格中添加一个复选框

继这个问题及其非常有用的答案之后:我在我的项目中实现了肯的答案的变体,在那里我有类似的代码以多种形式出现。但我注意到我也有一些带有 DrawColumnCell 处理程序的表单,如下所示

如何将上述代码与通用 OnDrawColumnCell 处理程序结合起来?是否可以使用额外的参数定义通用处理程序(这将是列索引;如果它是 -1,那么上面的代码将不会执行)?我如何将这样的参数传递给处理程序?

0 投票
1 回答
1684 浏览

delphi - DBGRID 中的超链接字段

我正在做一个小型内部软件来搜索我公司的分支线。除了支线,我还在数据库中放了一个电子邮件字段,如下所示:

在此处输入图像描述

我的本意是点击注册的邮箱,软件通过ShellExecute打开的窗口发送邮件。我正在使用该选项dgRowSelectTRUE因为该OnCellClick事件无法正确识别单击了哪个单元格。

在我的搜索中没有找到任何方法来做到这一点。然后我想到TLabel在该领域内使用 a 。我可以使用中的onclick事件,TLabel也可以更改光标图标。

如果TLabel是一个好的解决方案,我如何在 DBGrid 中添加一个 TLabel?

或者什么是另一个好的解决方案?

0 投票
1 回答
2512 浏览

delphi - 如何在 Delphi 的 TDBGrid 中以编程方式添加行

我想在网格中添加一些数据以显示用户。

我想用TDBGrid

如何在没有数据库的情况下将任何行添加到网格?

谢谢

0 投票
1 回答
4117 浏览

delphi - 如何在 TDBGrid 中获取列的标题?

如何获取列的标题TDBGrid

我试过这个,但它返回FieldName而不是标题:

0 投票
0 回答
1074 浏览

delphi - 在 Delphi 中删除记录时 DBGrid 行选择发生变化

我注意到,当您在 TDBGrid 中进行多选时,选择了许多行并删除了一条记录,该记录被删除得很好,但是您的选择在删除的记录下方发生了变化。所有行都向上移动一个,但选择保持在同一位置 - 因此选择有效地向下移动一个记录。

当发生删除(或以某种方式修复网格的行为)时,是否有一种简单的方法可以在网格中保留选择?

0 投票
0 回答
1133 浏览

delphi - 在 Delphi 中手指滚动 TDBGrid

我正在尝试使 VCL 应用程序对触摸更加友好,并且一直在尝试让 DBGrid 像 Android 或 iOS 网格/列表一样滚动。默认情况下,如果您进行两次轻弹,它会起作用 - 惯性和一切,但希望它通过单次轻弹或手指拖动来滚动。

我认为这将是触摸属性中的一些东西,但我还没有设法找出神奇的组合。

有人做过吗?

0 投票
1 回答
3101 浏览

delphi - DBGrid 如何隐藏标题行和指标列?

有没有办法隐藏 DBGrid 上的 Titles 行和 Indicator 列?我找不到任何此类财产。我可以以编程方式进行吗?