delphi – 如何删除一个TStringGrid行?

我有一个TStringGrid,我想删除所选行.基本的东西我试过只删除最后一行.如何删除任意行?

解决方法

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

仅使用公共和已发布的成员,可以编写一个删除任意行的循环.例如,这里有一些由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);

相关文章

ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:...
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂...
API原型: Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (By...