Delphi:用户关闭后恢复预设计标签页

时间:2010-05-04 15:42:21

标签: delphi delphi-2009 delphi-2010

我在表单上有一个tPageControl,并且在设计时作为新的ttabsheet创建了一个很好的“欢迎页面”供用户开始使用。但是,如果用户关闭此选项卡,我希望选择将其恢复原样(就像在Delphi IDE中的欢迎页面一样)。这似乎是一个简单的问题...

当标签关闭时,原始图纸将被释放并设置为零。我尝试按名称再次创建工作表(例如tabsheet1:= ttabsheet.create)并将其分配给pagecontrol,但工作表中的原始组件都不再存在...

我知道将欢迎页面设计为单独的表单,在需要时创建它并将其打包到新的标签页中可以正常工作......但我只是想知道是否有办法使用设计时间标签页

全部谢谢!

生锈

4 个答案:

答案 0 :(得分:2)

正如Serg所提到的,当你想要隐藏页面时,你可以将标签页的TabVisible属性设置为false。如果需要,页面控件将切换到下一个选项卡,选项卡将消失,并且在您更改TabVisible之前,用户将无法切换回它。

答案 1 :(得分:1)

重新创建设计时标签页将是一个非常大的挑战,因为描述其布局的所有信息都嵌入在表单的DFM资源中。它不像每个选项卡都有单独的资源,因此您需要读取资源,提取与选项卡相关的部分,然后获取ReadComponent来构建新实例; Delphi中没有任何东西可以让它变得非常简单,所以你应该考虑其他选择。

最简单的解决方案可能是在框架上设计欢迎页面;在重新教育它们时,我发现帧比完全成熟的形式更合作。

另一种选择是在代码中创建整个选项卡。 GExperts有一个工具,使这很容易。选择选项卡表,然后选择DExperts的“components to code”命令。这会在剪贴板上放置一些代码,您可以将其粘贴到程序中的函数中。代码将包含在代码中重新创建所选组件所需的所有内容,而不是从DFM资源构建它们。然后,您可以使用该功能不仅在关闭选项卡后重新创建选项卡,而且还可以首先创建选项卡。这样,你可以放心,你两次创造同样的东西。

您尝试重新创建选项卡不起作用的原因是用于保存对表单的引用的变量的名称并未真正定义任何内容。你所做的就是创建一个全新的TTabSheet。您将引用存储在用于保存对旧选项卡的引用的同一变量中的事实是无关紧要的。 (但请随意给该变量一个更有意义的名称;所有“TabSheet1”都表示它是您在表单上放置的第一个选项卡,当您第一次开始处理此项目时。)

答案 2 :(得分:0)

Rob对于发生了什么以及使用框架来修复它是正确的。如果您想要一个更简单的解决方案,您可以尝试让用户关闭它时隐藏该选项卡,而不是释放它。

答案 3 :(得分:0)

谢谢大家的意见和建议。几个笔记:

我尝试了GEExperts选项(相当不错,之前我没有使用过这个!):但是,它没有保留很多设计时间设置(例如字体大小和颜色)...还有没有字形的组件没有得救......

更改标签页的可见性似乎也不起作用;即使在调用之后,pagecontrol似乎也不知道要显示什么.Refresh ...它会显示窗口下面的内容。

无论如何,我可能会调查帧选项,但可能只是将组件移动到新表单并在需要时调用它...

再次感谢!