请教delphi高手

two1and1 2012-04-03 10:42:14
有如下一段程序,运行时,在第一个窗口按按钮能打开第二个窗口,在第二个窗口按第一个按钮能打开第三个窗口,但在第二个窗口按第二个按钮不能打开第四个窗口,不知何解,望有高手能指出。
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

//第一单元

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses unit2;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
form2 : TForm2;
begin
form2 := TForm2.Create(self);
form2.ShowModal;
form2.free;


end;

end.


//第二单元

unit Unit2;

interface

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

type
TForm2 = class(TForm)
Button1: TButton;
Label2: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation
uses unit3, unit4;
{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
form3 : TForm3;
begin
form3 := TForm3.Create(self);
form3.ShowModal;
form3.free;
end;

procedure TForm2.Button2Click(Sender: TObject);
var
form4 : TForm4;
begin
form4 := TForm4.Create(self);
form4.ShowModal;
form4.free;
end;

end.


//第三单元


unit Unit3;

interface

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

type
TForm3 = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

end.


//第四单元

unit Unit4;

interface

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

type
TForm4 = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form4: TForm4;

implementation

{$R *.dfm}

end.
...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2012-04-08
  • 打赏
  • 举报
回复
从代码看没问题,除非第二个按钮事件没有挂上,你调试看看能不能触发事件
山东蓝鸟贵薪 2012-04-08
  • 打赏
  • 举报
回复
其实就是窗体之间的“切换”呀
kaikai_kk 2012-04-04
  • 打赏
  • 举报
回复
又一个问题!!!
没有发现错误
Oraclers 2012-04-04
  • 打赏
  • 举报
回复
没有发现你的问题,同样可以打开第四个窗口。不过按第一个按钮打开第三个窗口后,由于你是用ShowModal,所以你必须先关闭第三个窗口后,才能再去第二个窗口按第二个按钮打开第四个窗口。如果要同时打开第三、第四个窗口,可以用Form3.Show;显示第三个窗口,这时可再去第二个窗口按第二个按钮打开第四个窗口。
炎热的夏季已经过去,家乡想必也要开始落叶了。如果我是小学生,让我以《秋》为题目作文,开头一定是“秋天是收获的季节”。是的,经过了春天的骚动,夏季的彷徨,来到了秋。这是新生报到的季节,动物贮藏食物的季节,马上就到十一长假的季节,这个季节更是收获的季节。 我们在播种时,势必首先考虑收成。种庄稼如此,学习语言更是如此。于是,“语言之争”是各个编程论坛必定讨论的话题,很多甚至是“X经”话题。对此,我的观点是:语言没有好坏之分,只有顺手不顺手和你能发挥到什么程度的问题。我们没有必要追求最新,“最先进”的编程方式,只需要学习好力所能及的语言。 VC的无所不能缺点是繁杂,稍有不慎就不知道什么地方出了包;VB常常被人耻笑过于简单,发布之后要带上一个“仓库”;Delphi虽然有快速开发的优势,但却姥姥不疼舅舅不爱的日渐西山…… 其实对于大多数人来说,我们使用什么应该是需求决定而不是语言本身决定需求,比如:我们希望自动根据数据生成表格,没有必要非用Delphi VC 调用 COM ,我们用用VBA就好了。因此,眼中只有那三种基本结构:判断 循环 跳转就差不多了,再高级一点,弄清楚什么是面向对象面向过程,随便一门语言都不会逃出这点东西。 我很佩服俄罗斯的软件,他们就是将语言工具发挥到极致的例子。比如:我在网上搜索到DOS下硬盘速度测试软件,竟然是Pascal编写的。 至于“学习好力所能及的语言”,我的意思是如果你身边有C语言的高手不妨向他请教或者同他切磋;如果你有学好数据结构的理想,不妨买一本Java描述数据结构的图书慢慢啃;如果你有网络数据库+界面的需求不妨考虑一下Delphi…… 因此,我的观点就是“语言没有好坏之分”,关键是你能掌握到什么程度。 当然,如果你能掌握汇编语言,这一切就更不在话下了。我很希望各位能够将学习语言当作乐趣,我们的杂志也将会以如何让读者在阅读中感到快乐感到成就感为目的。

16,749

社区成员

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

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