关于TStringGrid中行的删除(50分)

  • 主题发起人 主题发起人 qq74
  • 开始时间 开始时间
Q

qq74

Unregistered / Unconfirmed
GUEST, unregistred user!
老兄们,我要删除TStringGrid中的任意行,应该怎么做?
 
麻烦得很!StringGrid好像没有提供Delete函数
只有自己写一个了
 
procedure TzjFm.DeleteRow(rw: integer);
var
k, m: integer;
begin
if rw > 0 then begin
with StringGrid3 do begin
for k := rw to RowCount - 1 do
for m := 1 to 8 do
cells[m, k] := cells[m, k + 1];
RowCount := RowCount - 1;
end;
end;
end;
 
Linsb:
如果表格的行很多那不是很耗时间呀
 
不需要那么麻烦,行赋值就行了,
for i:=0 to stringgrid.rowcount-2 do
stringgrid.rows:=stringgrid.rows[i+1];
stringgrid.rowcount:=stringgrid.rowcount-1;
 
hnlygtjj的是错误的。
》》如果表格的行很多那不是很耗时间呀
有好办法吗?
 
我好象没有!只能这样
 
先解决问题,后求优化。效率要靠测试。
 
Procedure GridRemoveRow(StrGrid: TStringGrid; DelRow: Integer);
var //删除指定行.第一行的DElRow 为0
Row:integer;
begin
if DelRow<=StrGrid.RowCount then
begin
for Row:=DelRow+1 to StrGrid.RowCount-1 do
strGrid.Rows[Row-1].Assign(strGrid.Rows[Row]);
strGrid.RowCount:=strGrid.RowCount-1;
end;
end;
 
后退
顶部