加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何使用SENDER优化此代码?

发布时间:2020-12-15 09:09:22 所属栏目:大数据 来源:网络整理
导读:我有一个包含16个TCheckBox和32个TEditBox的表单. 每2个TEditBox能力取决于checkBox状态. 所以我使用的代码太长了: //T1procedure TOFAddForm.T1Click(Sender: TObject); begin Q1.Enabled:=T1.Checked; P1.Enabled:=T1.Checked; Q1.OnChange(Sender);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,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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读