多数の TListBoxItems を持つ Firemonkey TListbox を実装しようとしています。TListBoxItem の 1 つに、設計時に TListBoxItem にドロップするだけで多数の TRadioButton を配置しました。アプリケーションの実行時に、TListBoxItem が画面からスクロールされて再び表示されると、ボタンの外観が不安定になります。
ここ StackOverflow での別の TListBox の質問は、TListBox が TListBoxItem 以外のアイテムをホストしないことを指摘しています。そうは言っても、TListBoxItem について私が見つけることができるような制限はないようです。この方法で、TEdit、TLabel、および TComboBox コンポーネントを問題なく定期的に配置しました。
この状態を複製するには、新しい Firemonkey デスクトップ アプリケーションを開始します。TListBox をフォームにドロップし、alClient に設定します。TListBox に多数の TListBoxItem を設定します。TListBoxItems または Form の高さを設定して、実行時に TListBox をスクロールできるようにします。最上部の TListBoxItem に 3 つの TRadioButton をドロップします。すべての TRadioButton の GroupName を同じ名前に設定します。アプリケーションを実行します。TRadioButton を選択して、選択されているように表示します。ボタンを含む TListBoxItem がフォームの外にスクロールするように、TListBox をスクロールします。スクロールバック; 異常が観察されるまで、別の TRadioButton の選択とスクロールを続けます。
質問: まず、おそらく最も重要なことですが、設計時にコンポーネントを TListBoxItem に単純にドロップすることはできますか? このテクニックで以前に成功したのは、単なる偶然でしたか?
2番目に、私が取り組んでいるアプリケーションにとって重要なことですが、これが私のUIへの実行可能なアプローチではない場合、誰かがより良いアプローチを提案できますか?
ティア
私は Embarcadero の Quality Central にレポートを入力し、Tomohiro さんと数回やり取りした後、問題はスクロールに関連しているという Marcus Adams の提案とともに、次のような結論に達しました。
言及されたさまざまなケースを追跡すると、スクロールの使用により、このケースに関連する他の多くのケースがあるようです。アイテムが画面外にスクロールされてからスクロールバックされると、システムは表示に戻されたアイテムに明らかにスタイルを再適用します。少なくとも、私が追跡したいくつかのケースでは、そのように思われます。問題が発生するように見えるのは、このスタイルとレンダリングの再適用です。私自身の例では、コントロールの IsChecked プロパティを表示するボタンを追加しましたが、レンダリングはすべてのケースでプロパティを正しく反映していません。これは、スタイル/レンダリングが問題の原因であることを示唆しています。
私が見つけた関連する問題は次のとおりです。
QC 120593 QC 117381 QC 119638 QC 117658
解決を待っています。