如有好心人可以收我为徒,弟子真是感激不尽。如有刚学delphi志同道合的兄弟,我们也可一起捉摸一下,小弟QQ:271978974
问题:在主窗口点击菜单弹出的子窗口,子窗口要怎么样才能在主窗口的里面
跟word一样,我点击新增的文件使终在整个WORD窗口里面
小弟附上我写的代码
---------这个主窗口菜单点击代码-------------------
procedure Tmainform.N56Click(Sender: TObject);
begin
application.CreateForm(tfuncform,funcform);
funcform.show;
n56.Enabled:=false;
end;
------------------------------------------------------
14 个解决方案
#1
funcform.parent:=mainform;
#2
谢谢楼上的大哥,你的办法真行
可以在教我一下吗:我用了你的方法,当我把子窗口最大化的时候,子窗口还是具有标题栏,能把标题栏和主窗口的标题栏接合到一起吗
第二,把子窗口最大化后,主窗品的右和下出现了滚动条
十分感 谢
可以在教我一下吗:我用了你的方法,当我把子窗口最大化的时候,子窗口还是具有标题栏,能把标题栏和主窗口的标题栏接合到一起吗
第二,把子窗口最大化后,主窗品的右和下出现了滚动条
十分感 谢
#3
funcform.BorderStyle := bsNone;
#4
用mdi方式就可以了
#5
对不起,可能是我的描述没讲清楚,主窗口和子窗口的效果跟EXCEl一样,我新建一文档,标题栏合并到主窗口上,但子窗口任然有最小化,最大化,关闭按纽,且改变父窗口的大小,里面的子窗口会随之一起变化。
谢谢
谢谢
#6
这位前辈,MDI 是什么意思,小弟初学,不懂,请不吝指教
#7
这位前辈,MDI 是什么意思,小弟初学,不懂,请不吝指教
#8
file->new->other->projects->mdi application
#9
1.可以直接寫成MDI;
2.要麼指定其子窗體的parent為主窗體;
PS:
MDI(Multiple Document Interface)是多文档界面的意思...
MDI就象一个主界面,它一般带有菜单。里面又可以建立多个子窗口,就象WORD里面打开很多个文档,这些文档可以进行层叠、平铺等各种操作;子窗口可以在MDI 主窗口区域内定位、改变大小、最大化和最小化,当最大化子窗口时,它将占满MDI 主窗口的全部客户区。当MDI窗口最小化的时候所有子窗口随之最小化。
一个程序的主界面一般都是MDI窗口。
MDI介紹: http://wenku.baidu.com/view/4e12954e852458fb770b56c3.html
2.要麼指定其子窗體的parent為主窗體;
PS:
MDI(Multiple Document Interface)是多文档界面的意思...
MDI就象一个主界面,它一般带有菜单。里面又可以建立多个子窗口,就象WORD里面打开很多个文档,这些文档可以进行层叠、平铺等各种操作;子窗口可以在MDI 主窗口区域内定位、改变大小、最大化和最小化,当最大化子窗口时,它将占满MDI 主窗口的全部客户区。当MDI窗口最小化的时候所有子窗口随之最小化。
一个程序的主界面一般都是MDI窗口。
MDI介紹: http://wenku.baidu.com/view/4e12954e852458fb770b56c3.html
#10
//***************************************************************************
//函 数 名: CreateForm
//返 回 值: boolean
//参 数: TForm
//功 能: 判断MDI窗体的子窗体是否存在
//***************************************************************************
//函 数 名: CreateForm
//返 回 值: boolean
//参 数: TForm
//功 能: 判断MDI窗体的子窗体是否存在
//***************************************************************************
function TForm1.CreateForm(CForm:TForm):boolean;
var
i:integer;
FormExist:boolean;
begin
FormExist:=false;
if(CForm=Nil) then //判断CFrom是否为空
begin
CreateForm:=false; //函数返回值赋false
exit; //退出本函数
end;
for i:=0 to Screen.FormCount-1 do //判断窗体是否已经建立起来
begin
if Screen.Forms[i].ClassType=CForm.ClassType then //判断窗体存在
FormExist:=true;
end;
if FormExist=false then
begin
CreateForm:=false; //函数返回值赋false
exit; //退出本函数
end;
if CForm.WindowState=wsMinimized then
ShowWindow(CForm.Handle,SW_SHOWNORMAL) //显示窗体
else
ShowWindow(CForm.Handle,SW_SHOWNA); //显示窗体
if not CForm.Visible then
CForm.Visible:=true;
CForm.BringToFront; //当前窗口显示在最前面
CForm.SetFocus;
CreateForm:=true;
end;
#11
我看了你给我的网址,虽然我没看懂,但我学了一点,我把主窗口的formstyle设置为fsmdiform
把子窗口的formstyle设置为fsmdichild
这样就达到了我要的效果,可问题又出来了,我一测试,默认所有的子窗口都打开了,如果我有十个子窗口,它们全部都会打开
#12
打开你的项目,
在项目的代码中,将子窗体删除
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form1); //from2为子窗体,将该句删除
Application.Run;
end.
在项目的代码中,将子窗体删除
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form1); //from2为子窗体,将该句删除
Application.Run;
end.
#13
哈哈哈。。。。楼上的前辈,按你说的就没问题了,小弟感 谢
#14
var
phandle:^Thandle;
begin
phandle:=@application.MainForm.clienthandle;
phandle^:=clienthandle;
with Tuserform.Create(application) do show;
各位前辈,谁能帮我解释一下这段代码,
我在测试的时候
把主窗口的formstyle设置为fsmdiform
把子窗口的formstyle设置为fsmdichild 这样就能达到MDI的效果
我今天来就在mainform前加了一个loginform 窗口,就报错,然后我在打开子窗口那里加了以后代码后就行了,不知道为什么
phandle:^Thandle;
begin
phandle:=@application.MainForm.clienthandle;
phandle^:=clienthandle;
with Tuserform.Create(application) do show;
各位前辈,谁能帮我解释一下这段代码,
我在测试的时候
把主窗口的formstyle设置为fsmdiform
把子窗口的formstyle设置为fsmdichild 这样就能达到MDI的效果
我今天来就在mainform前加了一个loginform 窗口,就报错,然后我在打开子窗口那里加了以后代码后就行了,不知道为什么
#1
funcform.parent:=mainform;
#2
谢谢楼上的大哥,你的办法真行
可以在教我一下吗:我用了你的方法,当我把子窗口最大化的时候,子窗口还是具有标题栏,能把标题栏和主窗口的标题栏接合到一起吗
第二,把子窗口最大化后,主窗品的右和下出现了滚动条
十分感 谢
可以在教我一下吗:我用了你的方法,当我把子窗口最大化的时候,子窗口还是具有标题栏,能把标题栏和主窗口的标题栏接合到一起吗
第二,把子窗口最大化后,主窗品的右和下出现了滚动条
十分感 谢
#3
funcform.BorderStyle := bsNone;
#4
用mdi方式就可以了
#5
对不起,可能是我的描述没讲清楚,主窗口和子窗口的效果跟EXCEl一样,我新建一文档,标题栏合并到主窗口上,但子窗口任然有最小化,最大化,关闭按纽,且改变父窗口的大小,里面的子窗口会随之一起变化。
谢谢
谢谢
#6
这位前辈,MDI 是什么意思,小弟初学,不懂,请不吝指教
#7
这位前辈,MDI 是什么意思,小弟初学,不懂,请不吝指教
#8
file->new->other->projects->mdi application
#9
1.可以直接寫成MDI;
2.要麼指定其子窗體的parent為主窗體;
PS:
MDI(Multiple Document Interface)是多文档界面的意思...
MDI就象一个主界面,它一般带有菜单。里面又可以建立多个子窗口,就象WORD里面打开很多个文档,这些文档可以进行层叠、平铺等各种操作;子窗口可以在MDI 主窗口区域内定位、改变大小、最大化和最小化,当最大化子窗口时,它将占满MDI 主窗口的全部客户区。当MDI窗口最小化的时候所有子窗口随之最小化。
一个程序的主界面一般都是MDI窗口。
MDI介紹: http://wenku.baidu.com/view/4e12954e852458fb770b56c3.html
2.要麼指定其子窗體的parent為主窗體;
PS:
MDI(Multiple Document Interface)是多文档界面的意思...
MDI就象一个主界面,它一般带有菜单。里面又可以建立多个子窗口,就象WORD里面打开很多个文档,这些文档可以进行层叠、平铺等各种操作;子窗口可以在MDI 主窗口区域内定位、改变大小、最大化和最小化,当最大化子窗口时,它将占满MDI 主窗口的全部客户区。当MDI窗口最小化的时候所有子窗口随之最小化。
一个程序的主界面一般都是MDI窗口。
MDI介紹: http://wenku.baidu.com/view/4e12954e852458fb770b56c3.html
#10
//***************************************************************************
//函 数 名: CreateForm
//返 回 值: boolean
//参 数: TForm
//功 能: 判断MDI窗体的子窗体是否存在
//***************************************************************************
//函 数 名: CreateForm
//返 回 值: boolean
//参 数: TForm
//功 能: 判断MDI窗体的子窗体是否存在
//***************************************************************************
function TForm1.CreateForm(CForm:TForm):boolean;
var
i:integer;
FormExist:boolean;
begin
FormExist:=false;
if(CForm=Nil) then //判断CFrom是否为空
begin
CreateForm:=false; //函数返回值赋false
exit; //退出本函数
end;
for i:=0 to Screen.FormCount-1 do //判断窗体是否已经建立起来
begin
if Screen.Forms[i].ClassType=CForm.ClassType then //判断窗体存在
FormExist:=true;
end;
if FormExist=false then
begin
CreateForm:=false; //函数返回值赋false
exit; //退出本函数
end;
if CForm.WindowState=wsMinimized then
ShowWindow(CForm.Handle,SW_SHOWNORMAL) //显示窗体
else
ShowWindow(CForm.Handle,SW_SHOWNA); //显示窗体
if not CForm.Visible then
CForm.Visible:=true;
CForm.BringToFront; //当前窗口显示在最前面
CForm.SetFocus;
CreateForm:=true;
end;
#11
我看了你给我的网址,虽然我没看懂,但我学了一点,我把主窗口的formstyle设置为fsmdiform
把子窗口的formstyle设置为fsmdichild
这样就达到了我要的效果,可问题又出来了,我一测试,默认所有的子窗口都打开了,如果我有十个子窗口,它们全部都会打开
#12
打开你的项目,
在项目的代码中,将子窗体删除
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form1); //from2为子窗体,将该句删除
Application.Run;
end.
在项目的代码中,将子窗体删除
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form1); //from2为子窗体,将该句删除
Application.Run;
end.
#13
哈哈哈。。。。楼上的前辈,按你说的就没问题了,小弟感 谢
#14
var
phandle:^Thandle;
begin
phandle:=@application.MainForm.clienthandle;
phandle^:=clienthandle;
with Tuserform.Create(application) do show;
各位前辈,谁能帮我解释一下这段代码,
我在测试的时候
把主窗口的formstyle设置为fsmdiform
把子窗口的formstyle设置为fsmdichild 这样就能达到MDI的效果
我今天来就在mainform前加了一个loginform 窗口,就报错,然后我在打开子窗口那里加了以后代码后就行了,不知道为什么
phandle:^Thandle;
begin
phandle:=@application.MainForm.clienthandle;
phandle^:=clienthandle;
with Tuserform.Create(application) do show;
各位前辈,谁能帮我解释一下这段代码,
我在测试的时候
把主窗口的formstyle设置为fsmdiform
把子窗口的formstyle设置为fsmdichild 这样就能达到MDI的效果
我今天来就在mainform前加了一个loginform 窗口,就报错,然后我在打开子窗口那里加了以后代码后就行了,不知道为什么