delphi - 如何删除 TStringGrid 行?

标签 delphi tstringgrid

我有一个 TStringGrid,我想删除选定的行。我尝试过的基本操作仅删除最后一行。如何删除任意行?

最佳答案

如果您尝试的代码仅删除最后一行,那么您可能只是减少了 RowCount 属性。这确实总是在行列表的末尾进行修改。考虑到这一点,您可以编写代码来确保您不再需要的行是最后一行,然后删除最后一行。 (最直接的方法是移动行,有一个MoveRow方法,但它是 protected 。不过,如果您想调用 protected 方法,您也可以只需 call DeleteRow 即可。)

仅使用公共(public)和已发布的成员,可以编写一个删除任意行的循环。例如,以下是一些受 Scalabium Software's FAQ on this topic 启发的代码:

procedure DeleteRow(Grid: TStringGrid; ARow: Integer);
var
  i: Integer;
begin
  for i := ARow to Grid.RowCount - 2 do
    Grid.Rows[i].Assign(Grid.Rows[i + 1]);
  Grid.RowCount := Grid.RowCount - 1;
end;

它将您想要删除的行下面的每一行内容复制到上面的行中。在循环结束时,您要删除的行已被覆盖(被紧接其下方的行覆盖),并且最后一行有两个副本。然后它只是删除最后一行。

要删除网格的当前行,请像这样调用函数:

DeleteRow(Grid, Grid.Row);

关于delphi - 如何删除 TStringGrid 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351109/

相关文章:

delphi - 为什么 Synopse 连字代码给出的结果与 TeX 的结果不同?

delphi - Firemonkey 应用程序的单元测试

delphi - 在设计时将 TDataSet 嵌入表单中

delphi - Firemonkey MouseToCell 等效项

delphi - 在 Delphi 中将 TCheckBox 放入 TStringGrid 中

delphi - 在 Delphi XE2 中使用样式的字符串网格 - 滚动条不更新

delphi - 在 64 位模式下编译 Pascalscript,事件不起作用?

delphi - Delphi 7中如何获取当前方法的名称?

delphi - 为什么 TStringGrid 的子控件不能正常工作?

delphi - 如何在firemonkey TStringGrid中完成编辑后立即将数据发布到数据库