TTABSETタブ順序...設計時間より実行時に異なる
-
09-12-2019 - |
質問
ラザロス0.9.30.2を走っています。
TMAGECONTROLがあるTFORMを持っています。TPageControl内には一連のTTABシートがあります。実行時にTTABSheetsの順序は設計時刻とは異なります(写真を参照)。
設計時の順序は、少なくともフォームが初めて表示されたときに、実行時に見たいものです。実行時に注文が変更されるのはなぜですか、これを制御する方法はありますか?
解決
@tlamaは、これがマルチラインビューのときにWindowsタブコントロールが動作する方法に関連していることを正しいです。遵守している動作は、複数行タブの場合の選択方法に関連しています。どのタブが選択されているタブが選択されているかを示すビジュアルキューが常に下の行に表示されます。
制約が、選択したタブを変更するときに、コントロールは単にタブの行を並べ替える必要があります。それはユーザーが驚くほど混乱しています。良いUIデザインには、UI要素がこのような位置を変えることはありません。
明らかに起こっていることは、フォームが最初に表示されたときに実行時に再配置が起こっていること、およびこれが設計時間配置とは異なる配置をもたらすものであることです。ユーザーが選択するだけで行を任意の順序で配置できることを考えると、行が存在する順序を気にする必要があります。
フォームが最初に表示されているときに特定の配置を強制的に設定している場合は、このようなコードをFormのOnCreate
ハンドラに追加できます。
PageControl1.ActivePage := TabSheet9;
PageControl1.ActivePage := TabSheet5;
PageControl1.ActivePage := TabSheet1;
.
UI設計のベストプラクティスは、マルチラインタブコントロールを避けることであり、そのようにしてあなたのUIを再設計しようとするように勧めます。