请问如何让StringGrid和updown关联!? ( 积分: 25 )

  • 主题发起人 主题发起人 高手贵姓
  • 开始时间 开始时间

高手贵姓

Unregistered / Unconfirmed
GUEST, unregistred user!
窗体上有一个 StringGrid1 和 updown1,我想实现通过点击 updown 实现 StringGrid 中Cells的顺序交换。
比如选中 StringGrid1.Cells[1,2] 后点击 updown1 的向上,则 StringGrid1.Cells[1,2] 向上移动变成 StringGrid1.Cells[1,1],原来的 StringGrid1.Cells[1,1] 则变成了 StringGrid1.Cells[1,2]。
反过来点击 updown1 的向下,则 StringGrid1.Cells[1,2] 向下移动变成 StringGrid1.Cells[1,3],原来的 StringGrid1.Cells[1,3] 则变成了 StringGrid1.Cells[1,2]。
 
procedure TForm1.FormCreate(Sender: TObject);
begin
UpDown1.Min := StringGrid1.FixedRows;
UpDown1.Max := StringGrid1.RowCount - 1;
UpDown1.Position := StringGrid1.Row;
end;

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var
S: string;
begin
S := StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row];
StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] :=
StringGrid1.Cells[StringGrid1.Col, UpDown1.Position];
StringGrid1.Row := UpDown1.Position;
StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := S;
end;

procedure TForm1.StringGrid1Click(Sender: TObject);
begin
UpDown1.Position := StringGrid1.Row;
end;

这个是最简单的,不过当UpDown是上下按钮时,其向上按是增大的,所以StringGrid的相应cell会向下移动,要是左右按钮的话还可以
如果要向上按向上移,那么就要舍弃UpDown.Position属性,根据Button参数自己设置,这样又出现一个问题,因为Position到达Min或Max时,OnClick事件就不会再发生,所以又要在适当的时候重置Position,个人认为用Application.OnIdle重置可以
 
接受答案了.
 

Similar threads

D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部