stringgrid行移动问题(在线等待)(200分)

  • 主题发起人 主题发起人 玄成
  • 开始时间 开始时间

玄成

Unregistered / Unconfirmed
GUEST, unregistred user!
为了控制某行能不能移动,我是这样做的:
if arow=某行 then
stringgrid1.options := Stringgrid1.options - [gorowmoving]
else
stirnggrid1.options := Stringgrid1.options + [gorowmoving]
这样做时stringgrid会自动进入编辑状态,我设stringgrid.editormode:=false,都不行
或都能不能介绍一下有没有别的方法可以控制????(说废话者不给分)
 
设置GoEditing:=False;
 
if ARow=4 then
Options := Options - [gorowmoving]- [goEditing]
else
Options := Options +[gorowmoving]+ [goEditing];
 
兄弟,有一个第三方按件可以实现,不过名称忘了,真不好意思,

你用google搜索一下吧
 
linsb的问题因该可以解决你的问题!
 
如果移动了不让移动的行把它移回去:

procedure TForm1.StringGrid1RowMoved(Sender: TObject; FromIndex,
ToIndex: Integer);
var
s1,s2:string;
i:integer;
begin
if not(FromIndex in [10,20,30]) then exit; //不让移动 10,20,30 行。
s1:=stringGrid1.cells[0,ToIndex];
s2:=stringGrid1.cells[1,ToIndex];

if FromIndex>ToIndex then
for i:=ToIndex to FromIndex-1 do
begin
stringGrid1.cells[0,i]:=stringGrid1.cells[0,i+1];
stringGrid1.cells[1,i]:=stringGrid1.cells[1,i+1];
end
else
for i:=ToIndex downto FromIndex+1 do
begin
stringGrid1.cells[0,i]:=stringGrid1.cells[0,i-1];
stringGrid1.cells[1,i]:=stringGrid1.cells[1,i-1];
end;

stringGrid1.cells[0,FromIndex]:=s1;
stringGrid1.cells[1,FromIndex]:=s2;
end;

但是既然有右以移动的行,行号是动态的,可以用 cells[i,j]的值判断。
 
算了,反正我自己已经解决了,分数给你们
 
后退
顶部