帧名称自动分配

Ric*_*ick 6 delphi

Frames有什么特别之处,当你创建它们运行时它会自动分配一个名字?这在循环中使用时会导致问题,即:

for i := 0 to 3 do
  TMyFrame.Create(self); //Error on 2nd pass
Run Code Online (Sandbox Code Playgroud)

在第一次传递时,框架是explicityl名为'MyFrame'.在第二次传递时,它会再次尝试将其命名为"MyFrame",这会导致异常,因为已经存在具有此类名称的组件.

其他组件或表单很乐意在没有为其指定名称的情况下创建.是什么赋予了 ?

这是Delphi 2006顺便说一下.

干杯

小智 1

您尝试创建相同的框架 4 次,每次创建框架时它都会具有相同的名称,避免的一种方法是

...
var
  i: Integer;
  lFrame: TFrame;
begin
  for i := 0 to 3 do begin
    lFrame := TFrame.Create(Self);
    // assign a unique name to the frame
    lFrame.Name := Format('MyFrame%d', [i]);
    // set the parent, align, etc...
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • 我相信他的问题是_为什么_他必须对框架执行此操作,而他不必对其他组件执行此操作。 (3认同)