加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何删除一个TStringGrid行?

发布时间:2020-12-15 04:27:03 所属栏目:大数据 来源:网络整理
导读:我有一个TStringGrid,我想删除所选行.基本的东西我试过只删除最后一行.如何删除任意行? 解决方法 如果您尝试的代码仅删除最后一行,那么您可能只是递减RowCount属性.这确实总是在行列表的末尾进行修改.考虑到这一点,您可以编写代码以确保不再需要的行是最后
我有一个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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读