delphi下如何实现如下功能?

mark91 2012-10-22 06:38:50
假定在软件的主界面上有3个button,点击每个button,都会弹出一个新的窗口,如果3个button都点的话,就分别弹出3个新窗口(每个窗口都有自己的不同内容),连同原来的主界面,总共是4个窗口界面。我尝试用“主窗口下点击button创建新窗口的方法”,但最终只能显示一个窗口,根本不是我想要。请高手指教,先谢了。
...全文
643 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mark91 2013-01-12
  • 打赏
  • 举报
回复
继续请教:当我把Form1最小化时,Form2也跟着最小化了,请问如何保留显示Form2?
haitao 2012-10-23
  • 打赏
  • 举报
回复
1个主form,3个子form,缺省的自动创建模式,一个按钮对应show一个子form
就是这样的效果了
广州佬 2012-10-23
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TmyForms = class of TForm;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
procedure ShowForm(TForms: TmyForms;var Form: TForm);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.dfm}
uses Unit2,Unit3,Unit4;//Form2,Form3,Form4所在单元
var Form2,Form3,Form4:TForm;

procedure TForm1.ShowForm(TForms: TmyForms;var Form: TForm);
begin
if not Assigned(Form) then //未建立
Form:=TForms.Create(self)//建立
else
ShowWindow(Form.Handle,SW_SHOWNORMAL);//恢复原来尺寸
Form.Show;//显示出来
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowForm(TForm2,Form2);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowForm(TForm3,Form3);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ShowForm(TForm4,Form4);
end;

end.
luck8000 2012-10-22
  • 打赏
  • 举报
回复
动态创建窗口就可以,做个判断。
如有个form1 form2 form3创建一个窗口按钮中加入如下代码。

if not Assigned(form1) then
form1:=TForm1.Create(Self);
form1.show;

在form1 窗口关闭时 OnClose加上以下代码:
if Assigned(form1) then begin
form1.free;
form1:=nil;
end;
JPEXE 2012-10-22
  • 打赏
  • 举报
回复
你需要动态创建窗口对象:
form := TForm1.Create(Self);
form.Show;
mark91 2012-10-22
  • 打赏
  • 举报
回复
谢谢楼上的回复,实验了一下,的确能开任意个窗口,谢了。我描述的还不太清楚,我想要的是:1. 每个button不论点多少次,只能产生一个窗口(在实际操作过程中,某个button可能会反复操作好几次,但我只需要产生一个窗口就可以了,其后续的功能在这一个窗口中实现就行了);2.在windows的底部那一栏里,能够显示4个窗口的图标,就像我同时开启4个文档一样,点击其中一个窗口,该窗口立刻显示出来;3. 三个字窗口的最大最小化,能否跟主窗口的最大最小化独立?
sforiz 2012-10-22
  • 打赏
  • 举报
回复
新窗口用form1.show; 不要用form1.showmodal;
这样你就可以同时开任意数目的窗口了

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧