2017-12-08 12 views
2

実行時にツールバーのサイズを変更したり、さまざまな画面解像度に対応したい場合があります。高解像度の画面でツールバーをサイジングする際のガイダンスをご紹介します。

ツールバーはTControlBarにあり、ツールバーとコントロールバーは自動サイズ設定になっています。私は4つの異なるサイズのTImagelists 16 * 16から48 * 48をツールバーに割り当てることができます。私が見つけているのは、大きなイメージャリストを割り当てると、コントロールバーとツールバーの高さが高くなりますが、小さなイメージリストを選択すると縮小しないということです。私はまた、ツールバーは、より広い画像に対応するために長さが伸びないことも発見しました。これは予想される動作ですか?

デザインタイムに私の最大のイメージリスト48 * 48が実際に32 * 32のイメージをロードしていることがわかりました。すべての画像は、64 * 64,48 * 48 ...から16 * 16までの画像を保持する一連のアイコンから来ています。画像リストに保存できる画像のサイズに制限がありますか?各画像リストは36個の画像を保持する。

procedure TfmIDEMain.SetIconSize(Large: Boolean); 
begin 
    if Large then 
    case screen.PixelsPerInch of 
    96..111: ilTBIcons := ilMedIcons;   // Large Icons - Low res 
    112..120: ilTBIcons := ilLargeIcons;  // Large Icons - Hi Med 
    121..144: ilTBIcons := ilExLargeIcons;  // Large Icons - hi res 
    end 
    else 
    case screen.PixelsPerInch of 
    96..111: ilTBIcons := ilSmallIcons;  // Small Icons - Low res 
    112..120: ilTBIcons := ilMedIcons;   // Small Icons - Med res 
    121..144: ilTBIcons := ilLargeIcons;  // Small Icons - hi res 
    end; 

    tbFiles.Images := ilTBIcons; 
    tbEdit.Images := ilTBIcons; 
    tbBookmarks.Images := ilTBIcons; 
    tbCodeFolding.Images := ilTBIcons; 
end; 

上記のルーチンは、画面の解像度と "大"ブール値に従って画像を割り当てます。小さな画像サイズにリサイズするためにツールバーとコントロールバーを得るために何かすべきことはありますか?すでに自分を発見したとして、彼らはまだフィットしない場合

+0

デルファイのバージョンを指定すると役立つことがあります。 –

+0

Delphi Berlinを使用しています。10.1 –

+0

DPIスイッチを手動で操作するか、VCLに自動的に行わせますか?あなたはいつSetIconSizeを呼び出しますか? –

答えて

0

ツールバーのControlBar自体はイメージリストサイズに調整します。そのため、小さいものを割り当てようとしても縮小しないのは、Imagelistです。あなたはに設定することでAutoSizeプロパティをトリガーする場合であってもツールバーは、その幅を調整する必要があります。

イメージリストサイズに対するこの反応は制御がDPIの変化に反応するときに使用されるSCALEBY機能に影響を与えます。 Imagelistを割り当てると、ツールバーが拡大され、次のScaleByが間違った基本サイズを使用します。 DPIがツールバーを縮小するときのもう1つの方法は、大きなImagelistが割り当てられている限り、それに応じてサイズを縮小することはできません。

これが正しい順序でイメージリストを割り当てることが必要です。

  • 大きなイメージリストが小さいイメージリストが割り当てられなければならない大きなサイズ
  • にコントロールをスケーリングした後に割り当てる必要がありますコントロールをより小さなサイズにスケーリングする前に
+0

DPIはアプリケーションの起動時に決定され、アプリケーションがツールバーイメージのサイズだけを実行している間はDPIを変更しようとしていません。コントロールを小さなサイズにスケーリングするとどういう意味ですか?私は、ボタンの高さとコントロールの高さを小さな高さに再設定しようとしましたが、小さなイメージリストを割り当てることはできませんでした。 –

+0

また、オートサイズのオンとオフを切り替えることを試みましたが、ツールバーは変更されたイメージサイズに合わせて幅を調整していません。 –

+0

私が言ったように:あなたがツールバーを小さくしたいときは、小さいイメージを最初に割り当ててから、ツールバーのサイズを手動で調整する必要があります。オートマトンはありません。 –