Delphi相当于C#和#x27;s数据网格视图

Delphi相当于C#和#x27;s数据网格视图,c#,delphi,datagridview,delphi-xe,tstringgrid,C#,Delphi,Datagridview,Delphi Xe,Tstringgrid,Delphi中是否有C#的DataGridView的真正等价物 我试过了 TStringGrid 但滚动条要么在所有项目都可见时不可见,要么是最小的滚动条,无论项目溢出的程度有多小,滚动条都是可能的,只有在释放滚动条时才更新,而不是在拖动滚动条时更新 此外,如果您有一个固定行,那么除此之外还必须有至少一个(空)行,这既不方便也不美观 TDBGrid 但我似乎不知道如何以编程方式添加项(而且我认为它无论如何也不应该这样做)。如果我能做到这一点,TDBGrid对我来说就可以使用了 那么,

Delphi中是否有C#的DataGridView的真正等价物

我试过了

  • TStringGrid

    • 但滚动条要么在所有项目都可见时不可见,要么是最小的滚动条,无论项目溢出的程度有多小,滚动条都是可能的,只有在释放滚动条时才更新,而不是在拖动滚动条时更新
    • 此外,如果您有一个固定行,那么除此之外还必须有至少一个(空)行,这既不方便也不美观
  • TDBGrid

    • 但我似乎不知道如何以编程方式添加项(而且我认为它无论如何也不应该这样做)。如果我能做到这一点,
      TDBGrid
      对我来说就可以使用了

那么,与C#的
DataGridView
相比,什么是Delphi等价物,它没有上面列出的问题?

DataGridView是一个非常灵活的控件,可以在绑定和非绑定模式下工作,在Delphi端,您必须选择两种控件,例如,如果控件的内容可以直接编辑(未绑定),您可以选择一个组件,如TStringGrid或在绑定模式下(在delphi中称为data aware),您必须选择类似的组件,在最后一种情况下,您编辑与控件关联的数据集,并且控件反映数据集的内容。使用最后一个场景。关于数据集组件,您有几个选项可供选择,其中最灵活的选项是。如果您想了解有关此主题的更多信息,请查看以下链接


注意:在Delphi(XE2)的最新版本中,引入了一个新概念,称为,这在将对象或组件绑定到集合或其他组件的方式上带来了巨大的变化。

我建议您检查DevExpress.com QuantumGrid-它在绑定和未绑定模式下都能工作

只需将TDbGrid链接到TTable或其他TDataSet。@HenkHolterman我现在将尝试一下,看看如果您不能,我是否能让它工作让它工作。。粘贴你的代码。。我做Delphi已经17年了,所以我知道Delphi和C#hope@Henk的评论都有帮助,他说得对,也希望你有一个有效的数据源组件,也许你有所有正确的组件,但没有正确连接。。如果你想做任何定制风格的东西,我会远离TStringGrid reguires太多的手工编码。。另请看TClientDataSet的奇迹too@HenkHolterman@DJ KRAZE我尝试了两种方法
TDbGrid1.DataSource:=ClientDataSet1
TDbGrid1.DataSource:=TTable1但它无法编译,因为类型错误。对不起,我对德尔福有点陌生,所以我可能错过了一些东西obvious@SethCarnegie到,您必须在表单中删除tdbgrid、tdatasource和tdataset(子代),然后以这种方式连接tdbgrid.datasource:=datasource,datasource.dataset:=clientdatasetI很抱歉,我仍然遇到问题,但我无法将我的
TClientDataSet
Active
属性设置为
true
,因为它显示“缺少数据提供程序或数据包”。我可以看看这方面的例子吗?TClientDataset要么作为独立的内存数据集,要么作为数据源和另一个数据集(可以是本地的,也可以是远程的)之间的桥梁。如果打开ClientDataset,它必须连接到提供者,提供者必须像TADOQuery一样连接到数据集。您还可以自己定义字段并调用CreateDataset,使clientdataset作为独立的数据集运行。TClientDataset非常灵活,但在网格中显示查询结果时,不一定需要它。只要查询(=数据集)、数据源和网格就足够了。@GoleStrol我不想让它显示查询结果,我只想在类似表格的布局中显示一些字符串。我仍然不知道如何插入新行。。。我真的很抱歉,这让我不知所措。啊,我误解了。在这种情况下,您可以选择TStringGrid,它允许您通过设置RowCount和ColumnCount属性来添加行。然后,您可以访问任何单元格以添加字符串。如果数据的结构类似于表(特定类型的列),则可以使用ClientDataset并将其用作内存中的数据集。您将数据添加到ClientDataset并使用TDBGrid来显示它。我经常使用ClientDataset来显示和输入这类数据,因为DBAware控件(TDBGrid、TDBEdit等)知道如何编辑和显示某些类型的字段。如果将DBEdit连接到带有整数字段的ClientDataset,则可以节省大量验证。但这是另一回事,我不知道是否每个人都会赞成这种方法