如何通过使用SENDER在Delphi中优化事件处理代码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计254个文字,预计阅读时间需要2分钟。
我有包含16个CheckBox和32个EditBox的表单。每个EditBox能根据CheckBox的状态来决定是否可用。因此,我使用的代码变得相当长:/T1procedure TOFAddForm.T1Click(Sender: TObject);begin Q1.Enabled :=T1.Checked; P1.Enabled :=T1.Checked;end
我有一个包含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;`
我使用了这段代码但没有任何反应:
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;
谢谢.
如果所有复选框和编辑都一致命名,则可以将此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;
本文共计254个文字,预计阅读时间需要2分钟。
我有包含16个CheckBox和32个EditBox的表单。每个EditBox能根据CheckBox的状态来决定是否可用。因此,我使用的代码变得相当长:/T1procedure TOFAddForm.T1Click(Sender: TObject);begin Q1.Enabled :=T1.Checked; P1.Enabled :=T1.Checked;end
我有一个包含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;`
我使用了这段代码但没有任何反应:
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;
谢谢.
如果所有复选框和编辑都一致命名,则可以将此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;

