问题标签 [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 投票
2 回答
796 浏览

delphi - Delphi 7 - TDBGrid 风格

如何在 Delphi 7 中使用程式化表格?例如:

在此处输入图像描述

0 投票
1 回答
280 浏览

delphi - 是否可以使用 TADOTable 作为数据源编辑 VCL TDBGrid 中的字段?

我最近使用 Delphi 的 VCL 修改了一些旧的 UI 代码以使用 ADO 而不是 BDE。其中一个屏幕使用 TDBGrid 控件来修改底层数据源,但似乎无法再编辑网格中的值。这是我的配置方式:

TDBGrid->TDataSource->TADOTable

我在另一个似乎相关的论坛上发现了这篇文章:http: //coding.derkeiler.com/Archive/Delphi/alt.comp.lang.borland-delphi/2009-08/msg00023.html

这是 ADO 的限制吗?还是我只需要在某处更改控件的设置?(光标类型还是什么?)

0 投票
4 回答
366 浏览

delphi - 调整 TDbGrid

我正在迈出第一步进入数据库感知控件(有什么好的教程吗?)。

我有一个包含 6 列的 MySql 表,并设法将其加载到 TDbGrid 中。

然而,其中一列是另一个表的索引。这是一个条形码,我不想显示它,而是想显示与它相关的产品名称。

我怎么做?

(我可以隐藏左侧显示当前行的“排水沟”(?)吗?)

谢谢

0 投票
2 回答
1873 浏览

delphi - TDBGrid 列的设计时间还是运行时间?

我是TDBGrid第一次使用。

我什至没有注意到Columns对象检查器中的属性,一切都很好:网格被填充了。

然后我看到了该Columns属性并尝试了它。当我使用对象昆虫器将项目添加到Columns网格的属性时,它们并没有全部显示在运行时。对我来说,财产似乎FieldName很重要。看起来是正确的,但某些列中没有值。

如果我将此属性留空(根本没有列),则控件似乎会在运行时自行填充它,并且我确实看到了所有列。我可以忍受。当我在运行时设置列标题时它可以工作,但设置列宽不起作用。


[更新] 感谢您的反馈。我正在慢慢学习。现在我看到了正在发生的事情。我想要计算五列中的三列。两个来自 INNER JOIN,第三个来自SELECT ... FROM_UNIXTIME(<table>.time_stamp).

如果我没有在设计时定义列,那么这些值会在我执行 SELECT 时在运行时填充。Cnn 有人告诉我如何在设计时进行设置吗?谢谢

0 投票
2 回答
4743 浏览

delphi - 如何在 TDbGrid 中获取光标下的文本

屏幕宽度不足以显示一些文本字段。我不知道如何自动包装它们,我怀疑它是否可以轻松完成。

所以,我想我会做类似的事情

或者,也许这样做OnShowHint并获取鼠标坐标并将它们转换为列和行(更有效)

但是,当然,TDbGrid 没有Cells. 当用户将鼠标移到网格的“单元格”上时,知道如何设置控件的提示吗?

0 投票
1 回答
174 浏览

delphi - 为什么我的工具提示出现在远离鼠标坐标的地方?

当用户将鼠标移到TDbStringGrid. 它几乎可以工作,但提示显示在高处和左侧。

在我的OnMouseMove中,我收到 X 和 Y,我认为这是绝对的屏幕坐标,但我可以用来dbGrid.MouseCoord(X, Y)在数据库网格中获得一个点。

当我使用 显示我的提示时Application.ActivateHint(),它被放置在高处和左侧。

知道我做错了什么吗?

0 投票
8 回答
25436 浏览

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

我正在尝试使用 a 制作一个框架,该框架DBGrid将服务于 10 多个表,其中一半字段作为默认值,其他字段为每个表独有。

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

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

在此处输入图像描述


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

0 投票
2 回答
1746 浏览

delphi - 如何在显示之前操作 DB Grid 的内容?

我在存储压力的数据库表中有一个列。压力始终存储为 PSI,可以通过潜水 14.5 转换为 BAR。

用户可以使用无线电组切换 PSI/BAR 的显示。

我正在使用 aTStringGrid并且正在转换为 a TDbGrid- 这对我来说很新。

当用户切换 PSI/BAR 时,如何更新我的数据库网格中的显示?(我想我只是再次执行它的查询?或调用query.Refresh()?)但是我该如何进行转换?

  1. 可能是一个存储过程,虽然这看起来有点矫枉过正,存储过程对我来说也是新的......
  2. 通过更改SELECT我的查询语句?但我该怎么做呢?SELECT pressure / 14.5 FROM measurements? 或者怎么做?
  3. 或者有没有OnBeforeXXX()我可以编码的?或者OnGetDisplayText()类似的?

我确信这是非常基本的,但直到现在我一直在显示未经处理的数据,现在我需要一个转换函数。谷歌没有帮助,但我可能不知道该要求什么。

我还想更改列标题的文本,在“压力 (PSI)”和“压力 (BAR)”之间切换。提前感谢您的帮助。

0 投票
3 回答
460 浏览

delphi - 如何在数据库网格中显示 TIMEDIFF(现在,然后)?

抱歉,我对 DbGrids 很陌生。

我是否应该使用查询的字段编辑器并以某种方式添加一个捕获 TIMEDIFF 的新字段,然后将其添加为我的 DbGrid 中的列?

或者我可以/应该跳过字段编辑器并以某种方式将 TIMEDIFFF 声明为列?

对于这个表,我想要一个有 4 列的 DbGrid:开始时间、结束时间、持续时间、描述(run_id 是主键,不会显示)。

我对如何将数据放入“持续时间”列感到困惑......


[更新]数据源的查询是

当我在 MySql 中手动执行它时,我得到

但数据库网格中的相应列保持空白。任何人都可以帮忙吗?谢谢。


[更新] 如果有帮助,我正在使用 AnyDac。当我使用 AnYDac 查询编辑器并执行它时,该查询会在 MySql 和 Delphi IDE 中生成所有字段,包括时差。

唯一的问题是我在运行时在数据库网格中看不到它。我在设计时双击数据库网格,列是正确的。该FielName属性设置为duration,由上面显示的查询重新调整。它在数据库中不存在,而是通过查询计算出来的;这可能是问题所在吗?


[Aaaaaaaargh !!!] 有人试图“改进”我的代码并在运行时以编程方式设置查询的文本(如SELECT * FROM test_runs),从而覆盖了我的设计时查询!!由于数据库表没有duration字段,因此在数据库网格。

话已经说了,声音也提高了,现在我必须为浪费你的时间而道歉。对不起。

0 投票
1 回答
401 浏览

delphi - 数据库网格 - 我可以在第一行而不是第一列显示标题吗?

我想显示 MIN()、AVG()、MAX() 进行 5 次测量。

鉴于我的屏幕空间,垂直显示我的 DG 网格比水平显示要好得多。

我想要一个 2 列 15 行的 DB 网格,而不是反之亦然。

但是我如何将文本放入第一列(例如“Measurement 1 MIN()”)?我更喜欢使用数据库网格,而不是左侧有 15 个 TLabel 的 1 x 15 表,但我不想在我的数据库中存储“列(实际上是行)标题”。

我希望我清楚地描述了这一点 - 如果没有,请要求澄清 - 并且有人可以提供帮助。