gpt4 book ai didi

delphi - 如何简洁地检查多个编辑框中的任何一个是否已更改为原始值?

转载 作者:行者123 更新时间:2023-12-01 23:11:01 27 4
gpt4 key购买 nike

我创建了包含 3 个 TEdit、1 个 TButton 和 3 个字符串和 bool 变量的简单项目。当 TEdit 中的每个值发生更改时,我如何创建过程或函数来设置 Button.Enable := True。需要通过创建过程或函数来减少编码,而不是下面的代码。

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
btnSave: TButton;
procedure FormCreate(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
private
{ Private declarations }
public
strWelcome, strTo, strThailand: String;
modify1, modify2, modify3 : Boolean;
{ Public declarations }
end;

在创建表单时,我将 3 个字符串值赋给 3 个 TEdit.Text 并将修改变量设置为 False

procedure TForm1.FormCreate(Sender: TObject);
begin
strWelcome := 'Welcome';
strTo := 'To';
strThailand:= 'Thailand';

modify1 := false;
modify2 := false;
modify3 := false;

Edit1.text := strWelcome;
Edit2.text := strTo;
Edit3.text := strThailand;
end;

3个TEdit的Oneexit分配给Edit1Exit(Sender: TObject);检查文本值是否仍然等于初始值?如果 TEdit.Text 的某些部分发生更改,btnSave 将启用。

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Edit1.Text = strWelcome then
modify1 := False
else
modify1 := True;
if Edit2.Text = strTo then
modify2 := False
else
modify2 := True;
if Edit3.Text = strThailand then
modify3 := False
else
modify3 := True;
btnSave.Enabled := modify1 or modify2 or modify3;
end;

任何创建过程或函数来减少上述代码的想法。 :)

最佳答案

您可以使用数组来使其更加简洁,但只有三个项目可能不值得。如果这确实是正在考虑的所有代码,我会这样写:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
btnSave.Enabled :=
(Edit1.Text <> strWelcome) or
(Edit2.Text <> strTo) or
(Edit3.Text <> strThailand);
end;

您应该删除三个 bool 字段。它们不再使用,并且在任何情况下都应该是本地变量或作为具有 getter 函数的属性公开。而且您应该将 strXXX 变量转换为常量,因为我认为它们不会改变。

我还建议为您的编辑控件提供信息丰富的名称。

关于delphi - 如何简洁地检查多个编辑框中的任何一个是否已更改为原始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187801/

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