3

私は FireMonkey スタイルについて学んでいます - 私の主なリファレンスはhereです。シンプルなラベルと形状で試したことはすべてうまくいきましたが、現在は TListBox を使用して次の 2 つのことを試みています。

  1. TListBox 内の項目のフォントを設定します。
  2. その境界線を削除します (TCalloutPanel に配置されたクライアントです)。

フォーム上に StyleBook を作成し、コントロールを右クリックして [カスタム スタイルの編集] を選択する方法を使用しています。(ただし、ランタイムの変更も同様に喜んで行います)。

このフォントで成功した唯一の方法は、複数の TListBoxItem を作成し、それぞれのテキスト設定を使用したことです。VCLのように親設定を引き継ぐ方法はないのでしょうか? VCL の場合と同じように、次のようにリスト ボックス項目を簡単に追加したいと思います。

 ListBox1.Items.Add( 'text' )

しかし、作成された内部 TListBoxItem 配列を実行時に取得する方法がわかりません。

もう 1 つの問題は、境界の四角形を削除する方法が見当たらないことです。単純な長方形は簡単です-ストロークがあります-しかし、StyleBook の TListBox のすべてのレイアウト オプションを調べてみると、どこにもストロークが表示されません。

XE7を使用しています。何か不足していますか?

助けてくれてありがとう。

4

1 に答える 1

3

背景がTRectangleタイプであるという保証はありません。

[カスタム スタイルの編集] オプションを選択すると、常に Windows スタイルであるプラットフォームの既定のスタイルが編集されます。(つまり、カスタム スタイルがまだ読み込まれていない場合)

プラットフォームのデフォルト スタイルを処理する方法として、ネイティブ コントロールのスナップショットを取得し、それらを 1 つのイメージにマージして、そこから特定のコントロールに個別にソースリンクできるようにしました。そのイメージは、変更可能なスタイルで使用できます。

  1. ListBox 内の項目のフォントの設定

    アイテムを右クリックして [カスタム スタイルの編集] を選択すると、新しいスタイル オブジェクトが StyleBook に追加されます。リストボックス項目の場合、listboxitem1style1番号は異なる場合があります (名前は、このオブジェクトのデフォルト スタイルである に由来しますlistboxitemstyle)。

    これは、StyleBook で編集するスタイル オブジェクトです。完了したら、StyleBook を閉じて、StyleLookup各 ListBox 項目のプロパティを に変更しますlistboxitem1style1。できれば、実行時にプロパティに値を割り当てる必要があります。
    ListBoxItem1.StyleLookup := 'listboxitem1style1';

  2. TListBox から境界線を削除する

    カスタム スタイルが StyleBook に読み込まれた後、スタイル デザイナーを使用して、割り当てられた BitmapLink オブジェクトに移動しListBox1Style1 > background : SourceLink propertyて編集します。SourceRect基本的に、長方形を -2 で膨らませて、境界線を取り除きます。

ここに画像の説明を入力

于 2014-10-20T18:07:03.590 に答える