【问题标题】:TNotebook or TPageControlTNotebook 或 TPageControl
【发布时间】:2013-11-14 10:23:10
【问题描述】:

我有一个应用程序使用TNotebook 在不同的子页面之间切换,如图所示。

现在我必须稍微扩展一下这段代码(即添加一个页面并更改大小)。

我被告知不应再使用TNotebook。在 Delphi 的帮助中,我发现“新应用程序应该使用 TPageControl”。

我的问题:我是否应该重构代码以使用TPageControl 而不是TNotebook? TNotebook有什么缺点?

【问题讨论】:

  • TNotebook 有一些错误功能,例如缺乏对 VCL 样式和结构视图的支持。在 Delphi 5 中,我更喜欢 TNotebook 的简单性,但最近在 XE2 中做了一个应用程序,我切换到 TPageControl 以实现整体更流畅的集成
  • @Arioch'The 你应该发布作为答案
  • @TobyAllen 我认为我可以提供的事实比不准确的模糊印象要多
  • @Arioch'我打算切换到 XE?所以这会影响我的决定。
  • @Arioch'The 这不是错误。这是设计使然。该控件遵循流行的系统主题。您会发现几乎所有的系统控件都是如此。

标签: delphi vcl delphi-2006


【解决方案1】:

在我看来,TPageControl 的主要优势在于它是一个系统原生控件,与TNotebook 不同。当您使用系统本机控件时,该控件由系统绘制,因此呈现出您使用的操作系统的本机外观。

当应用程序在新版本的操作系统上运行时,您的控件会自动获得该操作系统本机的外观。更重要的是,该行为是系统原生的。我的意思是控件响应键盘输入的方式等等。 TPageControl 的问题不大,因为系统没有提供那么多默认行为。但作为一般规则,建议是合理的。

当系统原生控件都不能满足您的特定要求时,您可能需要使用非原生控件。然后你必须努力确保你的控件适应它的环境。但是当有系统原生控件时,除非有强烈的理由避免使用它,否则应该使用它。

【讨论】:

  • 在我当前的应用程序中,TNotebook 没有标签,只是为了切换,控件是可见的。所以我认为@Arioch'The 关于 VCL 样式的评论不适用(不确定“结构视图”)?我知道这个答案中的常见考虑因素 - 但我没有看到任何具体的缺点(目前),所以我认为,我不会更改代码(目前)。谢谢。
  • 显然,您可以选择使用什么,但我认为在这方面没有什么比我已经做过的要多说的了。我猜你知道 TPageControl 也可以在这种“向导”模式下使用,而不显示任何选项卡。当您这样做时,您的应用程序将看起来像标准主题系统对话框。因此,这取决于您是想使用原生外观,还是使用自己应用的个人外观。
【解决方案2】:

TNotebook 的另一个缺点是它从继承中排除了放置它的窗体或框架。

【讨论】:

  • 欢迎来到 SO。我认为您的回答确实应该是评论,但是新用户可以在 SO 上做的事情非常有限,直到他们获得足够的声誉点为止。你的观点很好,所以我赞成你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多