【问题标题】:Column.Index is not reflecting immediately in TDBGridColumn.Index 没有立即反映在 TDBGrid 中
【发布时间】:2011-11-16 19:59:33
【问题描述】:

我有一个 TDBGrid,并有一个通过 TDataSource 关联的客户端数据集。 当我尝试以编程方式重新排列网格的列时,当网格中有一个或多个列时,这可以正常工作。

可以说,我将所有列都设置为 false。因此,网格还没有任何列。 现在,当我将 11 列的索引设置为 0 时。

Columns[iColIndx].Index := iNewColIndex;
// Assume iColIndx = 11 and iNewColIndex = 0

Columns[iNewColIndex].Visible := True;
//Making the column visible

上述列索引的分配没有反映在网格中。如果我尝试将其设置为两次或三次,那么它就会得到反映。我错过了什么吗?

【问题讨论】:

  • 您是否尝试先设置Visible := True;,然后设置Index?可能是顺序更改实际上延迟到网格实际显示(没有看代码,但这是我怀疑的第一件事,也是我尝试的第一个更改)。
  • 我也尝试过,但没有运气。列的索引没有改变,但设置可见是正确显示列。在这种情况下,如果我显示索引小于当前显示的另一列,如果我们从列索引的角度来看,列的顺序会发生变化。有什么方法可以强制列更改索引吗?我什至尝试在 TDBGrid 中暴露 ColumnMoved 方法,但它也没有用。
  • 更改索引后是否尝试调用Columns.Update
  • ahmm...我解决了...首先这是我的错误。我已经为网格分配了 OnDrawDataCell 以绘制渐变,但我没有从那里调用 DefaultDrawDataCell。此外,DefaultDrawing 被关闭。在设置 DefaultDrawing 并从 DrawDataCell 事件处理程序中调用 DefaultDrawDataCell 后,它现在工作正常......非常感谢您的支持......
  • 如果你已经解决了,那么你应该发布你的答案并接受它......

标签: delphi tdbgrid


【解决方案1】:

我解决了。我已经分配了网格的OnDrawDataCell 来绘制渐变,但我没有从那里调用DefaultDrawDataCell。此外,DefaultDrawing 属性已关闭。

在设置DefaultDrawing 并从DrawDataCell 事件处理程序中调用DefaultDrawDataCell 之后,它现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-10
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多