gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:39:31 27 4
gpt4 key购买 nike

我有一个包含 16 个 TCheckBox 和 32 个 TEditBox 的表单。每 2 个 TEditBox 的启用取决于复选框的状态。所以我使用了这段太长的代码:

//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;

关于delphi - 如何使用 SENDER 优化此代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7619228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com