Delphi 网格每行具有不同的数据类型,动态显示

标签 delphi tdbgrid

我正在尝试创建一个 Delphi 网格,以允许在数据库网格中显示和编辑每行可能具有不同数据类型的数据。我想显示每种数据类型的特定控件,例如当数据类型为 DateTime 时,我想显示自定义编辑控件,该控件允许输入日期或弹出日历。

数据看起来像这样:

Name   DataType   DateValue   StringValue   BooleanValue     
---------------------------------------------------------
A      Date       1/1/2007 
B      String                 asdf
C      Boolean                              True

...在数据库中,该表为每种可能的值类型有一列。因此,有一个 BooleanValue 列、DateValue 等。

我想要做的是在网格中显示一个“值”列,该列根据该行的“数据类型”显示适当的编辑控件。因此,网格应该如下所示:

Name   DataType   Value     
---------------------------
A      Date       1/1/2007 
B      String     asdf
C      Boolean    True

看来我需要根据DataType的值动态地为每行显示不同的编辑控件(以允许用户编辑Value列)柱子。我知道有更先进的网格可以处理此类问题,但是除了 Delphi 开箱即用的功能外,他们不允许任何其他功能。

关于如何使这样的事情发挥作用有什么想法吗?

最佳答案

就我个人而言,在这种情况下,我不会直接在 TDBGrid 内进行编辑,因为您的表没有进行数据库标准化(实际上我在任何情况下都不使用它)。我会使用计算字段来显示网格中的所需值,并在表单上为每个字段类型动态创建TDBxxxEdit(您自己的怎么样? >TDBTreeEdit 例如,TDBrichEdit 或 DB Image 拾取编辑器等...?)。

如果您确实想在TDBGrid上使用自己的控件,并替换默认的TInplaceEdit编辑器,您可以引用以下文章:Adding components to a DBGrid ,以及相关文章:Displaying and editing MEMO fiels in Delphi's TDBGrid

关于Delphi 网格每行具有不同的数据类型,动态显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10077913/

相关文章:

string - 在 Delphi 中将行添加到备忘录顶部

delphi - 打印 TDBGrid

Delphi TDBGrid 选定行获取值

delphi - 检查 dll 函数中的参数是否存在 (Delphi 5)

xml - 将列表框数据保存到 XML?

delphi - 将 CRC 值保存在文件中,而不更改实际的 CRC 校验和?

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

delphi - 确定双击是否在TDBGrid的标题中

Delphi 2009 IDE结构 View 折叠功能