有什么好办法能删除STRINGGRID中一行吗?下面还有记录(50分)

  • 主题发起人 主题发起人 BZ
  • 开始时间 开始时间
B

BZ

Unregistered / Unconfirmed
GUEST, unregistred user!
STRINGGRID不象LISTVIEW有行的概念,所以每次删除行的时候都是重新装数据,很慢,
有什么好办法吗?
还有当STRINGGRID的ROWSELECT为真时,怎么样限制只能单行选择?
 
procedure TMainForm.DeleteRow(row: integer);
var
k, m: integer;
begin
if row > 0 then begin
with stringgrid1 do begin
for k := row to RowCount - 1 do
for m := 1 to 5 do
cells[m, k] := cells[m, k + 1];
RowCount := RowCount - 1;
end;
end;
end;
 
楼上的代码不错, 收藏。
还可以有取巧的方法呀, 换个构件试试。
TIrStringGrid不错, 它提供了专门插入删除某行、插入删除某列,以及从某行开始删除
等方法。另外, 还可以预置标题行的文字。
在“32位Delphi深度历险”上有。且是With Source的 :)
 
对mlZhou的代码做了点修改
procedure TForm1.DeleteRow(row: integer);
var
k, m: integer;
begin
if row > 0 then begin
with stringgrid1 do begin
for k := row to RowCount - 1 do
Rows[k]:=Rows[k+1] ;
RowCount := RowCount - 1;
end;
end;
end;
 
var
mycol, myrow: integer;

procedure TNameForm.StringGridSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
NameEdit.Text:=StringGrid.Cells[ACol, ARow];
mycol:=ACol;
myrow:=ARow;
end;
procedure TNameForm.AddButClick(Sender: TObject);
var
i: integer;
begin
if NameEdit.text='' then exit;
for i:=0 to StringGrid.RowCount-1 do
if NameEdit.text=StringGrid.Cells[0, i] then
begin
Showmessage('该维护人员的名字已经存在!');
NameEdit.SetFocus;
exit;
end;
if (StringGrid.RowCount=1) AND (StringGrid.Cells[0, 0]='') then
StringGrid.Cells[0, StringGrid.RowCount-1]:= NameEdit.text
else
begin
StringGrid.RowCount:=StringGrid.RowCount+1;
StringGrid.Cells[0, StringGrid.RowCount-1]:= NameEdit.text;
end;
NameEdit.Clear;
NameEdit.SetFocus;
end;

procedure TNameForm.DelButClick(Sender: TObject);
begin
//删除
if StringGrid.RowCount=1 then
begin
Showmessage('你不想保留最后一个维护人员吗!');
exit;
end;
if myrow>=StringGrid.RowCount-1 then
StringGrid.Cells[mycol, myrow]:=''
else
while myrow<StringGrid.RowCount-1 do
begin
StringGrid.Rows[myrow] := StringGrid.Rows[myrow+1];
Inc(myrow);
end;
StringGrid.RowCount:= StringGrid.RowCount-1;
end;
 
我一直不知道ROWS有什么用,多谢siyan
还有单行选择麻烦谁解答一下
 
把Option里的goRangeSelect设为False!
 
多人接受答案了。
 
后退
顶部