【发布时间】:2021-04-24 13:36:15
【问题描述】:
我的问题是我想用过程 Button1Click(Sender: TObject); 创建新的表单和按钮。我遇到的问题是我不知道如何使用过程 TForm2.myClick(Sender: TObject); 打开新创建的表单。我希望通过不同的按钮创建不同的表单。
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,Vcl.StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure myClick(Sender: TObject);
end;
var
Form2: TForm2;
var
i:Integer = 1;
var
a:Integer = 1;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
with TButton.Create(self) do begin
Left := 80;
Top := 50 + i * 60;
Width := 300;
Height := 50;
Name := 'Liste' + IntToStr(i);
Self.Caption := ClassName+' '+ IntToStr(i);
OnClick := MyClick;
Parent :=Form2;
end;
i:= i + 1;
begin
with TForm.Create(Self) do begin
Left := 0;
Top := 0;
Width := 1000;
Height := 700;
Name := 'Erinnerung' + IntToStr(a);
Caption := 'Erinnerung' + IntToStr(a);
Parent := self;
OnClick:= MyClick;
Visible:=false;
end;
a:= a + 1;
end;
end;
procedure TForm2.myClick(Sender: TObject);
begin
end;
end.
【问题讨论】:
-
我认为你需要在开始编码之前做一些规划。很明显,您希望您的
Form2有一个按钮,单击该按钮会创建其他按钮。这些按钮应在单击时创建并显示其他类型的表单。这些表单是设计时设计表单的实例,还是您想“在代码中设计它们”,如您的示例所示?所有这些次要表单都是同一类型,还是Form2上的不同按钮会创建不同的表单?你考虑过MDI吗? 但最重要的是,要清楚这一点,您的问题到底是什么? -
创建表单时没有保留引用,这意味着无法从按钮单击事件轻松访问它。 (您可以遍历
Screen.Forms来尝试找到它,但您必须提前确切知道您要寻找哪种形式。您的设计似乎很差,但很难准确理解您的内容。重新尝试完成以提出更好的做事方式。