2

ある ListBox が別の ListBox にある非常に複雑なインターフェイスを作成したいと考えています。まず、ListBox1 のすべての要素が、Firemonkey のスタイル デザイナーからスタイル「CustomItem」を取得します。

  Item := TListBoxItem.Create(nil);
  Item.Parent := ListBox1;
  Item.StyleLookup := 'CustomItem';

次に、「CustomItem」スタイルの別の ListBox (「ListBox2」) があります。

このListBox2の「StyleLookup」プロパティにアクセスするにはどうすればよいですか?

Item.StylesData['ListBox2'].StyleLookup := 'CustomItem2'; //this does not work.

Firemonkey がそれをサポートしているかどうか知っていますか?

ありがとうございました。

4

2 に答える 2

2

TListBoxコンポーネントがどのように機能するか、およびStyleLookupプロパティがどのように関係するかを誤解しています。TListBox がホストできる唯一のコントロールは、TListBoxItemまたはそのコントロールの子孫です。

参照するは、Delphi Firemonkey CustomListBox サンプルに含まれるCustomItemカスタム FMX スタイルの一部であるスタイル オブジェクトの名前です。


スタイル オブジェクトの名前を StyleLookupプロパティに指定することで、スタイル オブジェクトを特定のリスト ボックス項目に割り当てることができます。アイテムは、そのスタイル オブジェクトによって指示されたとおりに視覚的に動作します。

本当に探しているのは、FMX.TTreeViewコンポーネントです。子アイテムをホストできるアイテムの追加ボーナスを使用して、TListBox とまったく同じように動作させることができます。提供されている Firemonkey サンプルをよく確認することをお勧めします。

于 2013-06-12T17:43:06.430 に答える
1

私は StylesData の使い方に慣れていませんが、これは OnApplyStyleLookup イベント ハンドラーの FindStyleResource で行うことができます。

procedure TForm1.ApplyStyleLookupEvent(Sender: TObject);
var O: TFMXObject;
begin
  O := (Sender as TFMXObject).FindStyleResource('ListBox2');
  if O is TStyledControl then
    TStyledControl(O).StyleLookup := 'CustomItem2';
end;

カスタム TListBoxItem オブジェクトがある場合は、これを ApplyStyle プロシージャに入れることもできます。

于 2013-06-12T20:51:09.303 に答える