问题标签 [dbgrid]

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 投票
3 回答
2247 浏览

c++builder - 禁用 TDBGrid 上的编辑选项不起作用

在运行时动态创建 TDBGrid 组件时,我不能禁止用户编辑单元格中的值。这就是我试图完成这种行为的方式:

在表单设计器中禁用dgEditing时,一切正常。我找不到这两种情况之间的区别。我应该怎么做才能禁用 DBGrid 单元格的编辑?

0 投票
2 回答
4223 浏览

delphi - 当 TDBGrid.DefaultDrawing 为 false 时,如何正确绘制全行选定 TDBGrid 的所有者?

当你有一个 TDBGrid,全行选择,并且总是显示选择,即使没有聚焦,并且你想完全拥有它,你可以选择一个不推荐使用的事件OnDrawDataCell和一个新事件DrawColumnCell,我选择了后者并尝试这:

让我抓狂的是 DefaultDrawColumnCell 代码没有绘制焦点指示(突出显示颜色和焦点矩形),而且我确定我应该调用 DrawCellHighlight 而不是执行上面所做的 FillRect hack。

如果我打开 DefaultDrawing,我会遇到一组故障(奇怪的字体绘制问题),如果我关闭它,我会遇到另一组故障(即使 gdSelected 也没有突出显示)。

DBGrids.pasDefaultDrawColumnCell中的代码只是绘制文本。很明显,如果你自己接管所有的绘图代码,你应该做更多的事情。但是,内置在 Grids.pas 中的高亮绘图代码(DBGrids.pas 所依赖的)并非旨在从该上下文中调用。我不知道我是否应该直接调用DrawCellHighlight(如上所示),并找出 Col 和 Row 值,或者我是否应该编写自己的复杂版本的 TCustomGrid.DrawCellHighlight 来手动处理所有各种情况。

当然,这很简单,很明显,我只是忽略了它。请注意,我必须关闭 DefaultDrawing,因此我必须完全从我的所有者绘制事件中进行绘制,并且我必须能够在主题服务不可用时运行,并且我必须在主题服务可用时使用它们。所以我需要直接调用 TCustomGrid.DrawCellHighlight (我不知道怎么做),或者我需要完全重新实现它。

0 投票
1 回答
757 浏览

delphi - dbgrid 自动适应表单

我在 BDS 2006 中使用过 DBGrid。它有 6 列在运行时填充。一列的数据类型是 mysql 数据库中的 char(150)。因为在从数据库检索到 dbgrid 时,它需要长度,并且列通过滚动条变得更宽,并且一些列保持隐藏。所以我的问题是如何将 dbgrid 的这些列适合表格?

0 投票
1 回答
2203 浏览

delphi - EhLib DBGridEh 滚动问题


我在我的应用程序中 使用EhLib DBGridEh ,当我开始使用 Scrollbar 滚动它时,我遇到了高亮问题。
如果我不选择网格中的单元格,那么突出显示将正常工作。
但是,如果我选择单元格并开始使用ScrollBar 滚动,则只会突出显示一个单元格而不是整个原始单元格,并且之前的原始单元格也会被突出显示。
这些你可以在图片上看到。
滚动错误

就在几周前,当我使用鼠标滚轮滚动网格时,我遇到了同样的情况。我通过添加对应用程序消息的处理解决了这个问题。

有在我的网格中启用的属性的完整列表:
选项

  1. dg编辑
  2. dg 标题
  3. dg指标
  4. dgColumnResize
  5. dgColLines
  6. dgRowLines
  7. dgTabs
  8. dgAlwaysShowSelection
  9. dgMultiSelect

选项Eh

  1. dghFixed3D
  2. dghResizeWholeRightPart
  3. dghHighlightFocus
  4. dghClearSelection
  5. dghMultiSortMarking
  6. dghEnterAsTab
  7. dghRowHighlight
0 投票
2 回答
2709 浏览

vb6 - 使用 Visual Basic 6 中的数据控件和数据源从 DBGrid 过滤记录

我遇到了这个问题,当用户在文本字段中输入信息时,我想过滤网格的结果。

实际上我有文本字段、网格(一个 DBGrid 控件)和数据控件,但我不知道如何过滤插入文本字段的网格。

0 投票
1 回答
1059 浏览

mysql - 组合 DBGrid 列值

我的应用程序中有一个 BDS 2006 的 DBGrid 组件。网格快照如下。

在此处输入图像描述

DBGrid 组件连接到 MySQL 数据库,该数据库在运行时被填充。我使用的查询是:

我想显示BILL NOMachine idasBILL NO并且值应该是 2_1,如果Machine id是 2 并且BILL NO是 1。知道该怎么做吗?

编辑1

这个查询给我的结果如下

在此处输入图像描述

它给出 machineandbillno=billno+pcid

0 投票
1 回答
271 浏览

delphi - 每当显示 DBGrid 时,如何获取要调用的方法?

TMS 的 DBStringGrid 组件有一个自动调整行高的内置方法。我了解该方法工作所需的属性设置,并且在调用它时效果很好。

我希望网格的行在显示网格时自动调整大小,但我不知道在哪里放置方法调用。我认为组件的 OnCustomCellDraw 事件将是正确的选择,但这只会导致与无限循环相关的闪烁和内存使用(即使 grid.doubleBuffering 设置为 true)。

如果我希望在显示网格的任何时候调用 AutoSizeRows,你会建议我在哪里调用它?

更新:Ken 的回答很好,但我也发现将调用放在 DataSource 的 OnDataChange 事件中,每当数据库进入编辑模式时,可能对我的目的同样有效。

0 投票
3 回答
32502 浏览

delphi - 如何格式化 DBGrid 列以显示两个小数位?

我想格式化特定的单元格以强制保留两位小数。数据来自 ElevateDB 存储过程并连接到 TDataSource。

编辑:SQL 编程注意:

我不确定这是否只是 ElevateDB 问题。在了解Fields Editor之前,我尝试通过在存储过程中使用 CAST (NumericField as varchar(10)) 语句在 SQL 级别格式化数据。通过这样做,它不会在该特定字段的字段编辑器中 公开DisplayFormat属性。

当我从存储过程中删除 CAST() 语句时,DisplayFormat属性出现在Fields Editor中。

0 投票
1 回答
368 浏览

delphi - 如何在delphi 2010中显示父类别?

好的,我正在使用 Embarcadero Delphi 2010。目前我正在使用flib.mdb在该文件中命名的 Access 数据库文件,我创建了一个名为的表MCategory,其中有 4(四)列命名:codecategory作为文本和主键,parentcategory作为文本,category作为文本,notes作为文本。

对于数据库连接,我使用 ADOConnection。对于查询,我使用 ADOQuery。对于表,我使用 ADOTable。

因为代码是使用前缀自动生成的,但对于示例,我使用常规数字作为字符串。

只有一个ROOT:codecategory="0" // parentcategory="" // category="ROOT"不允许添加另一个ROOT(父类别为空的那个)

我的问题是如何重新屏蔽所有父类别,如下图所示?以及如何在 DBGrid 上查看它?

父类掩蔽

我应该使用递归吗?有什么简单的方法可以做到吗?

还有请在 Delphi 2010 中使用源代码.... ^^

0 投票
1 回答
16633 浏览

delphi - 在运行时更改 dbgrid 选项

我想更改 DBGrid.Option。我找到了以下代码:

但不能正常工作并报错[dgEditing]。我想启用或禁用 [​​dgEditing],[dgRowSelect] 模式。

非常感谢,非常感谢。