我正在尝试创建一个 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/