有关StringGrid的控制问题(可能会菜得让大家失望哦!!)
请问如何在stringgrid里删除一个特定行? 问题点数:100、回复次数:12Top
1 楼cgh1970(聊天别找我)回复于 2003-03-03 21:11:20 得分 0
upTop
2 楼bewill(失意的程序民工)回复于 2003-03-03 21:11:36 得分 20
StringGrid1.RowCount := StringGrid1.RowCount - 1;
然后重画内容。
Top
3 楼larruping(久有凌云志)回复于 2003-03-03 21:13:04 得分 20
for i := 0 to 4 do
begin
StringGrid1.Cols[i].Text:='';
end;Top
4 楼xuchunqiang(伤心的土八路)回复于 2003-03-03 21:13:52 得分 0
对,只能重画,我今天还刚用到,呵呵,Top
5 楼bluemeteor(挂月||Becoder)回复于 2003-03-03 21:15:13 得分 10
StringGrid1.Rows[i].Delete
i为 行号-1Top
6 楼pn(天下无双)回复于 2003-03-03 21:22:07 得分 0
重画Top
7 楼bluemeteor(挂月||Becoder)回复于 2003-03-03 21:25:37 得分 20
不好意思楼上弄错了:(((
stringgrid行列的增加和删除
--------------------------------------------------------------------------------
type
TExCell = class(TStringGrid)
public
procedure DeleteRow(ARow: Longint);
procedure DeleteColumn(ACol: Longint);
procedure InsertRow(ARow: LongInt);
procedure InsertColumn(ACol: LongInt);
end;
procedure TExCell.InsertColumn(ACol: Integer);
begin
ColCount :=ColCount +1;
MoveColumn(ColCount-1, ACol);
end;
procedure TExCell.InsertRow(ARow: Integer);
begin
RowCount :=RowCount +1;
MoveRow(RowCount-1, ARow);
end;
procedure TExCell.DeleteColumn(ACol: Longint);
begin
MoveColumn(ACol, ColCount -1);
ColCount := ColCount - 1;
end;
procedure TExCell.DeleteRow(ARow: Longint);
begin
MoveRow(ARow, RowCount - 1);
RowCount := RowCount - 1;
end;
Top
8 楼bluemeteor(挂月||Becoder)回复于 2003-03-03 21:25:54 得分 0
转贴自超级猛料Top
9 楼jieguo(天下有眼)回复于 2003-03-03 21:32:21 得分 0
我收藏一下了,支持挂月Top
10 楼hotzhu(天下无妞)回复于 2003-03-03 21:42:24 得分 10
有个TadvStringGrid很好用,看看里面的源码就知道, 实现方法即为挂月所写.Top
11 楼zhangpeigao(东部一绝)回复于 2003-03-03 21:42:58 得分 20
if StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]='' then exit;
if application.messagebox('确定删除','系统提示',MB_OKCANCEL+MB_ICONQUESTION)<>IDCANCEL then
begin
for i:=StringGrid1.Row to StringGrid1.RowCount-1 do
begin
StringGrid1.Cells[1,i]:=StringGrid1.Cells[1,i+1];
end;
if StringGrid1.RowCount=2 then
begin
StringGrid1.Cells[0,1]:='';
StringGrid1.Cells[1,1]:='';
end
else
StringGrid1.RowCount:=StringGrid1.RowCount-1;
j:=1;
for i:=StringGrid1.RowCount-1 downto 1 do
begin
StringGrid1.Cells[0,i]:=inttostr(j);
inc(j);
end;
end;Top
12 楼LKJ99(路是人走的,命是天定的)回复于 2003-03-14 11:57:09 得分 0
其实应该这样:
如果要删除 第 i 行,
你要这样:用 第 i+1 行 覆盖 第 i 行,
用 第 i+2 行 覆盖 第 i+1 行,
. . . . . .(如此类推直至 ) ,
用 第 RowCount -1 行 覆盖 第 RowCount -2 行;
最后把最后一行(即RowCount -1)清空 或者 RowCount := RowCount -1。
行的覆盖方法:Rows[i] := Rows[i + 1]
当然,你还要注意一些特殊处理,
例如:StringGrid的总行数是0或1;删除的是不是最后一行等。Top




