Delphi 页控件在选项卡隐藏时更改问题:建议?

Delphi 页控件在选项卡隐藏时更改问题:建议?,delphi,delphi-5,Delphi,Delphi 5,我有一个带有七个选项卡的页面控件,所有选项卡都是隐藏的,我使用pcMain.ActivePage:=tsAuto(tsMarine等)更改页面。它可以工作,但更改和更改事件不会触发 我尝试了以下方法,但它只在选项卡可见时起作用。 我还使用pcMain.SelectNextPage(True)编写了一个程序,它对计数器和SelectNextPage进行递增和递减,但它也只在选项卡可见时起作用 有人对如何回避这个问题有什么建议吗?如果数据库处于编辑状态,我需要使用更改事件的AllowChange来

我有一个带有七个选项卡的页面控件,所有选项卡都是隐藏的,我使用pcMain.ActivePage:=tsAuto(tsMarine等)更改页面。它可以工作,但更改和更改事件不会触发

我尝试了以下方法,但它只在选项卡可见时起作用。

我还使用pcMain.SelectNextPage(True)编写了一个程序,它对计数器和SelectNextPage进行递增和递减,但它也只在选项卡可见时起作用


有人对如何回避这个问题有什么建议吗?如果数据库处于编辑状态,我需要使用更改事件的AllowChange来防止离开页面。

About.com中的代码应该可以正常工作。它显式地调用
CanChange
Change
,这反过来又调用事件处理程序(如果有)。它们不会检查请求的选项卡是否可见

此外,
SelectNextPage
也可以工作。您只需确保第二个参数通过了
False
,告诉它忽略选项卡可见性。(如果未为第二个参数指定值,则默认值为
True

如果这两种技术都不起作用,那么你需要深入挖掘,因为问题在别处


您可以尝试的另一件事是,如果存在挂起的数据库更改,则不分配新的活动页面。毕竟,你是决定进入下一页的人。如果您事先知道不应该发生这种情况,那么首先不要尝试这样做。

您可以在分配给
ActivePage
David时自己调用更新代码,但在我的情况下,这意味着有七个独特的调用,以避免触发更改事件。每当您手动分配
ActivePage
时,只需直接调用PageControl当前分配的
OnChange/OnChange
事件处理程序。要帮助实现自动化,请将分配和事件调用包装在一个助手函数中,您可以在需要时调用该函数。当选项卡被隐藏时,Delphi
TPageControl
存在错误,Emba无法修复(例如)。现在,我不知道这些错误是否与这里的问题有关,但这肯定是可能的。@David,该报告中描述的函数在Delphi 2005中不存在,因此我怀疑它在以前的版本中也不存在。查看我的D6代码,我相当怀疑与隐藏选项卡相关的错误比现代Delphi中更严重。我猜添加了
PageIndexFromTabIndex
来修复这些bug,但它并没有100%地修复bug。Rob,“应该”并不能解决它。我说过隐藏标签不起作用。隐藏选项卡时,ActivePageIndex不会增加。正如其他人所指出的,总的来说,页面控制是一团糟。我采用了另一种方法,使用窗体和父控件,让PC见鬼去吧。