谁能解释这段代码为什么不行(代码完整,直接可粘贴到Delphi中测试,花不了高手太多时间的)

MakeEverydayProgres 2003-10-20 06:46:57
请给出原因和解答

unit Unit1;

interface

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

type
Tfrm = class(TForm)
private
FParentRect: TRect;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property ParentRect: TRect read FParentRect write FParentRect;
end;

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

var
Form1: TForm1;
Ffrm: Tfrm;

implementation

{$R *.dfm}

constructor Tfrm.Create(AOwner: TComponent);
begin
inherited;
end;

destructor Tfrm.Destroy;
begin
inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Ffrm) then
begin
Ffrm := Tfrm.Create(self);
Ffrm.Parent := self;
end;
Ffrm.Show;
end;

end.
...全文
37 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
966126 2003-10-20
  • 打赏
  • 举报
回复
同意,而且这样做也没有任何意义

还有,即使是试验也不能不考虑逻辑上的问题,一个连逻辑上都无法通过的想法如何能够实现
大地精灵 2003-10-20
  • 打赏
  • 举报
回复
你既然是测试例子,那这样就可以,你自己想想
unit Unit1;

interface

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

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

Tfrm = class(TForm1)
private
FParentRect: TRect;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property ParentRect: TRect read FParentRect write FParentRect;
end;


var
Form1: TForm1;

implementation

{$R *.dfm}

constructor Tfrm.Create(AOwner: TComponent);
begin
inherited;
end;

destructor Tfrm.Destroy;
begin
inherited;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
Ffrm: Tfrm;
begin
Ffrm := Tfrm.Create(nil);
Ffrm.Left := 100;
Ffrm.Top := 100;
Ffrm.Parent := self;
Ffrm.Show;
end;

end.
大地精灵 2003-10-20
  • 打赏
  • 举报
回复
因为你的窗体文件没有dfm文件,所以就不行啦,呵呵
hthunter 2003-10-20
  • 打赏
  • 举报
回复
怎么在同一个单元里面定义了两个窗口类,没听说过可以这样做的
你把Tfrm和TForm1的定义分别放在单独的一个单元里面,然后在TForm1所在的Unit里面uses Tfrm所在的Unit。
aiirii 2003-10-20
  • 打赏
  • 举报
回复
maozefa(之源) 說得對!
阿发伯 2003-10-20
  • 打赏
  • 举报
回复
Delphi的窗体控件是和编译器结合在一起的,必须要有资源文件,即.dfm文件,你的Unit1.dfm文件中只有TForm1的资源,所以出错,而且不能把2个窗体控件定义在1个单元文件中,必须分开定义,然后调用。
  • 打赏
  • 举报
回复

你不要考虑逻辑上的功能,这只是一个测试程序
hmily1688 2003-10-20
  • 打赏
  • 举报
回复
你一个单元中放两个窗体,没有这么用过,帮你顶
btk308 2003-10-20
  • 打赏
  • 举报
回复
程序有點問題.
  • 打赏
  • 举报
回复
错误提示:
Resource Tfrm not found.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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