Anï*_*éli 3 delphi optimization sender
我有一个包含16个TCheckBox和32个TEditBox的表单.每2个TEditBox能力取决于checkBox状态.所以我使用的代码太长了:
//T1
procedure TOFAddForm.T1Click(Sender: TObject);
begin
Q1.Enabled:=T1.Checked;
P1.Enabled:=T1.Checked;
Q1.OnChange(Sender);
end;
.
.
.
//T16
procedure TOFAddForm.T16Click(Sender: TObject);
begin
Q16.Enabled:=T16.Checked;
P16.Enabled:=T16.Checked;
Q1.OnChange(Sender);
end;`
Run Code Online (Sandbox Code Playgroud)
我使用了这段代码但没有任何反应:
procedure TOFAddForm.T1Click(Sender: TObject);
var Q, P: TEdit;
begin
with Sender as TCheckBox do begin
Q.Name:='Q'+copy(Name,1,2);
P.Name:='P'+Copy(Name,1,2);
Q.Enabled:=Checked;
P.Enabled:=Checked;
end;
Q1.OnChange(Sender);
end;
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果所有复选框和编辑都一致命名,则可以将此OnClick事件添加到所有复选框:
procedure TOFAddForm.TClick(Sender: TObject);
var
C: TCheckBox;
Q, P: TEdit;
N: string;
begin
C := Sender as TCheckBox;
N := Copy(C.Name, 2, Length(C.Name));
Q := FindComponent('Q' + N) as TEdit;
P := FindComponent('P' + N) as TEdit;
Q.Enabled := C.Checked;
P.Enabled := C.Checked;
Q.OnChange(Sender);
end;
Run Code Online (Sandbox Code Playgroud)