有一个8列200行的表格放在StringGrid中,其中插有若干空行,我想删掉其中的空行,把数据都集中起来
我的程序是:procedure TForm_yc.clearnil;
var i,j,k:integer;
begin
for i:= 1 to 200 do
if sg.Cells[0,i]='' then
for k:=0 to 7 do begin
sg.Cells[k,i]:=sg.Cells[k,i+1];
end;
end;
结果不正确,出现数据重叠现象,请帮帮忙!
我的程序是:procedure TForm_yc.clearnil;
var i,j,k:integer;
begin
for i:= 1 to 200 do
if sg.Cells[0,i]='' then
for k:=0 to 7 do begin
sg.Cells[k,i]:=sg.Cells[k,i+1];
end;
end;
结果不正确,出现数据重叠现象,请帮帮忙!
procedure TForm_yc.clearnil;
var i,j,k: integer;
begin
for i:= 1 to sg.RowCount- 1 do
begin
for j:= 1 to sg.RowCount- 1 do
begin
if sg.Cells[1,j]= '' then
begin
for k:= j to sg.RowCount- 1 do
begin
sg.Rows[k]:=sg.Rows[k+ 1];
end;
sg.RowCount:= sg.RowCount-1;
break;
end
end
end
end;
碰到空行(第N行)把下一行(第(N+1)行)的数据上移。把该行(N+1)设为空行,如此循环,可以得到有多少行为‘非空行’,假使为M行,把前M行显示出来就可以了,类似于排序中的冒泡法
楼主,干吗不在插入的时候判断是否为空,为空值就直接不插入就行了吗,^_^