新人请教DELPHI界面切换问题

ice_bird 2013-06-22 09:13:51
本人刚学DELPHI不久,在做程序练习时,想实现点击菜单切换界面的功能,且只显示我所选择的当前页面,关闭之前的页面,form框架不变。请各位指点下这样的功能需要如何实现,谢谢。
...全文
434 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice_bird 2013-06-26
  • 打赏
  • 举报
回复
自己顶下
ice_bird 2013-06-25
  • 打赏
  • 举报
回复
现在在创建时加入FForm.align:=alClient;不知道这样能不能彻底解决适应panel的大小问题。还有就是不知道如果可以让用户自己选择关闭窗口应该怎么做,希望有人能指点下
LastAvengers 2013-06-24
  • 打赏
  • 举报
回复
可以用TabControl
ice_bird 2013-06-24
  • 打赏
  • 举报
回复
请问为什么我改了 ManualDock(Panel1,nil,alClient);却无法完全停靠panel1。还有就是如果可以让用户自己选择关闭窗口是否也有函数能实现?
OO_is_just_P 2013-06-24
  • 打赏
  • 举报
回复
procedure TForm1.ShowForm(aFormClass: TFormClass); var i :Integer; begin for i := 0 to Self.Panel1.ComponentCount-1 do if Self.Panel1.Components[i].InheritsFrom(TForm) then Self.Panel1.Components[i].Free; with aFormClass.Create(Self.Panel1) do begin ManualDock(Self.Panel1); Parent :=Self.Panel1; Show; end; end; 这个更懒人的做法,撒手不管型的。FForm也不用定义了。
OO_is_just_P 2013-06-24
  • 打赏
  • 举报
回复
我写了个例子 type TForm1 = class(TForm) Button1: TButton; Panel1: TPanel; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } FForm :TForm; procedure ShowForm(aFormClass :TFormClass); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses Unit2, Unit3; procedure TForm1.Button1Click(Sender: TObject); begin ShowForm(TForm2); end; procedure TForm1.Button2Click(Sender: TObject); begin ShowForm(TForm3); end; procedure TForm1.ShowForm(aFormClass: TFormClass); begin if Assigned(FForm) then FForm.Free; FForm :=aFormClass.Create(Application); with FForm do begin ManualDock(Self.Panel1); Parent :=Self.Panel1; Show; end; end;
OO_is_just_P 2013-06-24
  • 打赏
  • 举报
回复
统一用一个aForm搞定 var aForm: TForm; if Assigned(aForm) then aForm.Free; aForm :=TxxxForm.Create(Application) ... aForm.Parent :=Self.pnlContainer; aForm.Show;
ice_bird 2013-06-24
  • 打赏
  • 举报
回复
哪位能指点下啊?
ice_bird 2013-06-23
  • 打赏
  • 举报
回复
请问如何才能使得程序只建立需要建立的TabSheet,建立新的TabSheet时关闭之前的,或者由用户选择关闭之前的。网上说可以用动态建立窗口的方法,但这方面目前我还看不懂,所以是否可以由其他方法来实现。
酣酣 2013-06-22
  • 打赏
  • 举报
回复
子form的parent属性设置为主窗体的一个Panel 点击菜单式对应的子form执行BringToFront就可以了!
hongss 2013-06-22
  • 打赏
  • 举报
回复
引用 2 楼 y459618250 的回复:
试试 PageControl 控件
+1
hsfzxjy 2013-06-22
  • 打赏
  • 举报
回复
引用 3 楼 ice_bird 的回复:
用菜单的BringToFront实现的只是界面之间的切换,却无法实现关闭之前的页面,而且如果页面多的话在刚打开程序时需要载入大量的panel。而PageControl控件我不知道如何让TabSheet关闭,隐藏,按实际要求排列。 不知道是否是因为还有其他不知道的属性设置的问题。
关闭TabSheet: PageControl1.Pages[i].Free
ice_bird 2013-06-22
  • 打赏
  • 举报
回复
用菜单的BringToFront实现的只是界面之间的切换,却无法实现关闭之前的页面,而且如果页面多的话在刚打开程序时需要载入大量的panel。而PageControl控件我不知道如何让TabSheet关闭,隐藏,按实际要求排列。 不知道是否是因为还有其他不知道的属性设置的问题。
  • 打赏
  • 举报
回复
试试 PageControl 控件
Delphi XE2 正式版的破解程序,有效哦。 Delphi XE2 官方完整 delphicbuilder_xe2_win_dl.iso下载地址: http://altd.embarcadero.com/download/radstudio/xe2/delphicbuilder_xe2_win_dl.iso 文件大小: 2.33G MD5: de8b9f897e2ad678643b64898470b707 Delphi Prism XE2 - ISO 1.28G http://altd.embarcadero.com/download/prism/xe2/prism_xe2_win.iso RadPHP XE2 - ISO 343M http://altd.embarcadero.com/download/radphp/xe2/radphp_xe2_win.iso 建议大家用迅雷下载 ************************************** 英巴卡迪诺发布新版RAD Studio XE2开发工具套件 日前,英巴卡迪诺宣布发布新版RAD Studio XE2软件开发工具套件,新版包含了10多年来最深入全面的特性升级。RAD Studio XE2中包含了新版本的Delphi、C++Builder、Prism和RadPHP。主要特性包括完整的Delphi 64位Windows支持,通过全新的FireMonkey富商业应用平台支持Mac OSX和iOS,以及通过RadPHP XE2支持安卓web和移动应用开发。 对Delphi XE2和C++Builder XE2来说,一个极其重要的新特性就是FireMonkey,业界第一款用于创建商业软件的原生的能全面利用到CPU和GPU计算能力的富应用平台。使用 FireMonkey,Delphi和C++Builder开发人员能开发出视觉绚丽的高清和3D应用程序,并与后台的企业级数据库如Oracle、微软 SQL Server、IBM DB2、Sybase和其他数据库互联互通。FireMonkey应用以原生方式运行在Windows PC和Mac上,可以完全利用到现代GPU的处理能力,以不可置信的细节处理能力和优异的性能表现展现数据和用户界面。FireMonkey还可以使 Delphi XE2用户为移动(iOS)设备创建原生的高清和3D应用程序。 Delphi和C++Builder为应用开发提供原生开发方式,而RadPHP XE2则支持web开发和移动设备应用的开发。使用RadPHP XE2,开发人员可以轻松为移动智能电话和平板电脑创建支持触碰和UI优化的web应用。开发人员可以部署他们的移动Web应用为原生移动应用到苹果公司的iOS应用商店和安卓的应用市场。在他们的移动Web应用中,可以直接访问移动设备的硬件,如相机、GPS和重力感应器。 其他新增特性包括: Delphi XE2 和C++Builder XE2 Delphi XE2包括完整的Windows 64位对FireMonkey、编译器、调试器、RTL 和VCL的支持; dbExpress具有新的对InterBase XE, FireBird 2.5, SQL Anywhere 12 和ODBC的连接能力; 新的DataSnap移动连接器,带有原生的平台组件和示例以创建从移动客户端到Delphi DataSnap服务器的连接,支持安卓(Java), iOS (Objective C), 黑莓(Java) 和Windows Phone 7 (C#); 新增和更新的扩展工具,包括FastReport,用于快速设计和生成报表;Documentation Insight,用于Delphi的源代码文档工具; TeeChart、IBX、InstallAware、IP*Works、Aqtime、FinalBuilder、IntraWeb和Indy 的64位版本。 TeeChart、Indy和FinalBuilder还支持Mac平台; C++Builder XE2中还包含了新的代码审计和QA度量工具; LiveBindings使用户能连接任意类型的信息到任意的FireMonkey用户界面和图形对象上。用户可以绑定实时数据到标准的用户界面控件、高清或3D图形元素上,以创建可视化任意类型数据的崭新方式; RadPHP: 集成式为移动优化的Web开发; 部署应用到Web, iOS, 或安卓; 扩展的Zend框架组件集; Embarcadero Prism: 来自RemObjects的全新的.NET Oxygene编译器; 匿名接口实现; FastReport.net

16,748

社区成员

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

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