我正在尝试遵循GUI的代码以显示2个相同的窗口。我正在使用show而不是showmodal:
program RnTFormclass;
{$mode delphi}
uses
//cthreads, // for linux only.
Interfaces, Forms, StdCtrls;
type
RnTForm = class(TForm)
private
wnd: TForm;
btn: TButton;
public
constructor create;
procedure showit;
end;
constructor RnTForm.create;
begin
//Application.Initialize; //removed.
wnd := TForm.Create(Application);
with wnd do begin
Height := 300;
Width := 400;
Position:= poDesktopCenter;
Caption := 'LAZARUS WND';
end;
btn := TButton.Create(wnd);
with btn do begin
SetBounds(0, 0, 100, 50);
Caption := 'Click Me';
Parent := wnd;
end;
end;
procedure RnTForm.showit;
begin
wnd.Show;
end;
var
myform1, myform2: RnTForm;
begin
// create windows:
myform1 := RnTForm.Create;
myform2 := RnTForm.Create;
// show windows:
myform1.showit;
myform2.showit;
end.
我想显示/打开两个相同的窗口。尽管程序运行时没有任何错误或警告,但什至没有显示一个窗口。 该程序只是终止。
问题出在哪里,如何解决?感谢您的帮助。
编辑:如注释中所指出,Application.initialize被调用两次且未运行。我已经注释掉Application.initialize,并且代码仍然没有打开任何窗口。 (如果将show
替换为showModal
,则会一一打开窗口。)
主要问题是如何在show
之后保持窗口打开?
答案 0 :(得分:-4)
从评论中获取建议,我通过以下主要方法使它起作用:
begin
Application.Initialize;
// create windows:
myform1 := RnTForm.Create;
myform2 := RnTForm.Create;
// show windows:
myform1.showit;
myform2.showit;
Application.run;
end.
现在两个窗口都出现了,我可以单击并对其进行操作。
但是,在关闭两个窗口时,程序仍保持在后台运行。需要添加具有点击功能的退出按钮。