我有这段代码:
edit5.Text := IntToStr(j);
rw := j;
myRect.Left := 0;
myRect.Top := rw;
myRect.Right := 5;
myRect.Bottom := rw;
stringGrid1.Selection := myRect;
edit1.SetFocus;
我必须重写这段代码,因为我将它用于许多事件(事件button1click
,button2click
,我每次验证时都会这样做
所以我的意思是然后进入程序,所以我可以在很多情况下调用它
这个代码到目前为止我做了:
procedure highlight(edit1, edit5: TEdit; myrect: TGridRect;
stringgrid1: TStringgrid; var j, rw: Integer);
begin
edit5.Text := IntToStr(j);
rw := j;
myRect.Left := 0;
myRect.Top := rw;
myRect.Right := 5;
myRect.Bottom := rw;
stringGrid1.Selection := myRect;
edit1.SetFocus;
end;
但我不能称之为:
procedure Tform1.Button2Click(Sender: TObject);
begin
highlight;
end;
如何解决?我必须分开吗?
答案 0 :(得分:1)
您提取的程序不太正确。你传递了一个你不使用的矩形。您将rw
和j
作为var参数传递,但它实际上看起来像是一个值的参数。所以我会这样:
procedure Highlight(Edit1, Edit5: TEdit; StringGrid: TStringGrid; rw: Integer);
begin
Edit5.Text := IntToStr(rw);
StringGrid.Selection := Rect(0, rw, 5, rw);
Edit1.SetFocus;
end;
这样称呼:
Highlight(Edit1, Edit5, StringGrid1, j);
现在,假设您有时需要将不同的控件传递给该过程。如果您始终传递相同的控件,则将该过程作为您的类的方法:
procedure TMyForm.Highlight(rw: Integer);
begin
Edit5.Text := IntToStr(rw);
StringGrid.Selection := Rect(0, rw, 5, rw);
Edit1.SetFocus;
end;
并称之为:
Highlight(j);
我假设您传递的值j
可能会有所不同。所以它应该是一个参数。这是在决定某些东西应该是参数还是使用字段时需要使用的那种推理。问问自己在调用方法时是否总是传递相同的值?
最后,通过不命名变量,你正在努力工作。代码的读者如何知道Edit5
的特殊之处以及为什么它与Edit1
的区别对待。为变量命名。