delphi 生成新窗口的问题

chdaner 2010-04-16 09:32:23
下面代码有什么问题?为什么没有弹出新窗口呢
procedure TForm1.Button1Click(Sender: TObject);
var form2:tform;
begin
if not assigned(form2) then
Form2:=Form2.create(self);
Form2.show;
form2.Name :='TEST';
end;
...全文
125 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tom2427 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chdaner 的回复:]
那我想在新窗口里创建一个控件应该怎么做呢?

如创建一个memo
[/Quote]

动态创建的话可以
var Memo: TMemo;

begin
Form2:=TForm.Create(self);
Memo:=TMemo.Create(self);
Memo.Parent:=Form2;
Form2.Show;
end;
sibike 2010-04-16
  • 打赏
  • 举报
回复
正确的写法:

procedure TForm1.Button1Click(Sender: TObject);
begin
if not assigned(form2) then
Form2:=TForm2.create(self);
Form2.show;
form2.Name :='TEST';
end;
chdaner 2010-04-16
  • 打赏
  • 举报
回复
那我想在新窗口里创建一个控件应该怎么做呢?

如创建一个memo
merrymin 2010-04-16
  • 打赏
  • 举报
回复
var form2:tform;
form2定义为一个局部变量的话,if not assigned(form2)总是会返回True的,程序结构不正确。

Form2:=Form2.create(self);这一句改为
Form2 := TForm2.Create(self)
必须是类(TForm2)才能Create
hongss 2010-04-16
  • 打赏
  • 举报
回复

procedure TForm1.Button1Click(Sender: TObject);
var form2:tform;
begin
//if not assigned(form2) then
//Form2:=Form2.create(self);
Application.CreateForm(TForm,form2);
Form2.Show;
form2.Name :='TEST';
end;


haitao 2010-04-16
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
form2:tformMy; //Tform是一个抽象的基类,这里必须是 你自己继承实现的一个form类才行
begin
//if not assigned(form2) then
Form2:=TFormMy.create(self);
Form2.show;
form2.Name :='TEST';
//注意这个form2没有释放,只会在form1释放是时候被自动释放
end;
风之谷 2010-04-16
  • 打赏
  • 举报
回复
Form2.bringtofront

也有可能你的form1是modal
liuhengwinner 2010-04-16
  • 打赏
  • 举报
回复
哦,不好意思,没仔细看你的意思

Application.CreateForm(TForm,form2);
Form2.show;
form2.Name :='TESTdff';

tom2427 2010-04-16
  • 打赏
  • 举报
回复
form2作为临时变量,一开始不会被赋初值为nil,所以assigned(form2)的值是true
要么把条件语句去掉好了
liuhengwinner 2010-04-16
  • 打赏
  • 举报
回复
把你的窗体从自动创建窗体列表里移出就好了,不显示不代表不存在!
jsl8998620 2010-04-16
  • 打赏
  • 举报
回复
如果你窗体也是动态创建的话,代码应为

var
Form2: TForm;
Memo: TMemo;
begin
Application.CreateForm(TForm, Form2);
Form2.Show;
Memo := TMemo.Create(self);
Memo.Parent := Form2;
Form2.Name := 'TEST';
end;

5,388

社区成员

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

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