我正在跑Lazarus 0.9.30.2。
我有一个TForm,其中有一个TPageControl。在TPageControl中有一系列TTabSheets。在运行时,TTabSheets的顺序与设计时间不同(见图)。
设计时的顺序是我想在运行时看到的,至少在第一次显示表单时。为什么订单在运行时会发生变化,有没有办法控制它?
答案 0 :(得分:4)
@TLama是正确的,这与Windows选项卡控件在多线视图中的行为方式有关。您正在观察的行为与多行选项卡的处理选择方式有关。当您选择一个选项卡时,它总是显示在底行,因为用于指示选择了哪个选项卡的可视提示只能用于底行中的选项卡。
鉴于该约束,控件只需在修改选定选项卡时重新排列选项卡行。这让用户感到非常困惑。良好的UI设计永远不会像这样改变UI元素。
显然,这里发生的是重新排列在运行时在首次显示表单时发生,并且无论出于何种原因,这导致与设计时间排列不同的排列。鉴于用户可以通过选择它们以任何顺序排列行,我不确定您是否应该担心行出现的顺序。
如果您在表单首次显示时强制执行特定排列,则可以将此类代码添加到表单的OnCreate
处理程序中:
PageControl1.ActivePage := TabSheet9;
PageControl1.ActivePage := TabSheet5;
PageControl1.ActivePage := TabSheet1;
UI设计的最佳做法是避免使用多行选项卡控件,我建议您尝试以这种方式重新设计UI。