gpt4 book ai didi

delphi - 如何为每个 TEdit 设置特定的文本?

转载 作者:行者123 更新时间:2023-12-03 18:05:40 25 4
gpt4 key购买 nike

我是 super 新手,并尝试编写以下代码,将每个 TEdit.Text 设置为代码中提到的一个

procedure TForm2.Button1Click(Sender: TObject);
var
i : integer;
Edit : TEdit;
begin
for i := 0 to Edit.ComponentCount - 1 do
begin
with Edit.Components[i] do
begin
Text := 'Done';
end;
end;
end;

我做错了什么?

最佳答案

以下是我能看到的错误:

  1. 您永远不会为 Edit 赋值。
  2. 通常,表单拥有所有组件,因此 TEdit 拥有的组件为零。
  3. Edit.Components[i] 属于 TComponent 类型,它没有 Text 属性。如果您的代码编译通过,那么 Text 实际上就是表单的文本。您应该从这一点吸取的教训是永远不要再使用 with

您应该使用如下代码解决此问题:

procedure TForm2.Button1Click(Sender: TObject);
var
i: Integer;
Edit: TEdit;
begin
for i := 0 to ComponentCount-1 do begin
if Components[i] is TEdit then begin
Edit := TEdit(Components[i]);
Edit.Text := 'Done';
end;
end;
end;

请注意,这里我们使用了表单本身的 ComponentCountComponents[]。我们已经删除了邪恶的 with 声明。在首先使用 is 运算符检查组件的类型之后,我们必须将组件转换为 TEdit 类型的引用。

只要表单拥有在其中找到的所有编辑,这种方法就会起作用。但是,如果您动态创建控件,或者如果您使用框架或父窗体,那么这种基于通过 Components[] 的所有权的方法将不会产生所有控件。在这种更复杂的情况下,您需要使用 ControlCountControls[] 来使用父/子关系进行迭代。

关于delphi - 如何为每个 TEdit 设置特定的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49192967/

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