当前位置:  开发笔记 > 运维 > 正文

重复用户指定次数的过程

如何解决《重复用户指定次数的过程》经验,为你挑选了1个好方法。

我有许多程序,当用户点击按钮时动态创建TButton.以下代码就是一个例子:

procedure TForm1.Button2Click(Sender: TObject);

 begin

 if not Assigned(FSeatButton) then begin

   FSeatButton := TButton.Create(self);
   FSeatButton.Parent := self;
   FSeatButton.Left := 100;
   FSeatButton.Top := 100;
   FSeatButton.Width := 62;
   FSeatButton.Height := 25;
   FSeatButton.Caption := ('Seat');
   FSeatButton.OnMouseDown := ButtonMouseDown;
   FSeatButton.OnMouseMove := ButtonMouseMove;
   FSeatButton.OnMouseUp := ButtonMouseUp;

 end;
 end;

这会创建一个Tbutton,然后用户可以通过底部3程序拖动它.每次用户点击button2时我都需要重复此过程但是如果我使用for/repeat循环id必须指定何时结束它,但我不知道用户需要生成多少个按钮.

另外(这可能是另一个问题的想法),如何保存使用自己的ID创建的每个按钮,例如EG Button1,Button2 ... ButtonN.我猜我需要某种变量,每当用户点击按钮时它就会增加,并且它以某种方式包含在名称EG ButtonI中



1> David Heffer..:

听起来你只需要跟踪已经添加的所有按钮.使用容器来执行此操作:

在类型声明中添加一个容器:

uses
  System.Generics.Collections;

....

FButtons: TList;

在窗体的构造函数中实例化它,并在析构函数中将其销毁.或者如果您愿意,可以使用OnCreateOnDestroy事件.

然后,当您创建按钮时,将其添加到列表中:

procedure TForm1.Button2Click(Sender: TObject);
var
  Button: TButton;
begin
  Button := TButton.Create(self);
  Button.Parent := Self;
  Button.Left := 100;
  // etc.

  FButtons.Add(Button);
end;

如果您在创建后不需要参考按钮,那么您不需要列表,您可以这样做:

procedure TForm1.Button2Click(Sender: TObject);
var
  Button: TButton;
begin
  Button := TButton.Create(self);
  Button.Parent := Self;
  Button.Left := 100;
end;

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有