2016-11-17 11 views
1

私はツールバーを持っており、次の手順を使用してツールボタンの1つの四角形の色を変更しています。 ImageListのColorDepthcl24Bitであり、はdsTransparentです。手順は正常に動作します。実行時のツールボタンの画像の変更がもう機能しません

procedure TANewMain.BtReplaceHighOnClick(Sender: TObject); 
var 
    ABitmap: TBitmap; 
    ARect: TRect; 
begin 
    ABitmap := TBitmap.Create; 
    try 
    ImgList.GetBitmap(1, ABitmap); 
    ABitmap.Canvas.Brush.Color := ColorToRGB(clRed); // S04 
    ABitmap.Canvas.Pen.Color := ColorToRGB(clBlue); 
    ARect := Rect(5, 1, 11, 15); 
    ABitmap.Canvas.Rectangle(ARect); 
    ImgList.ReplaceMasked(1, ABitmap, clWhite); 
    finally 
    ABitmap.Free; 
    end; 
end; 

私が再利用のためにリポジトリにプログラムを追加すると正常に動作します。しかし、私が最初から新しいプログラムを始めて、まったく同じ手順を使うと、私は白いボタンを得る。私は、イメージリストとツールバーのプロパティが両方のプログラムで同じであることを確認しました。動作するプログラムは、しばらく前に書かれたものです。問題はWindowsのアップデートと関係がありますか?私はWindows 10とDelphi 10を使用しています。

答えて

2

問題には2つの解決策があります。

1)のチェックボックス 'ランタイムテーマを有効にする' untickingすることで、アプリケーションのthemeing

無効化を無効にする 'プロジェクト - オプション - Application' を。 cdDeviceDependent

  • DrawingStyle:dsNormal
  • IMAGETYPE

    これの欠点は、Windows 95

    ImageList

    • カラー深度の特性を以下の2)変更のために開発されたアプリケーションが見えることです:itマスク

    結果l Windowsの10(およびツールボタンに関しては、Windows 7でも同じ)で、このようなooks:

    enter image description here

    は、従って私は二つのボタンが赤を持って、ボタンのトグルとして機能するようにコードを修正しました矩形。

    数字は、白い背景に黒いテキストを含む64 x 64ピクセルのビットマップです。

    注意:コピー - 修正 - コピーバックの繰り返しは、の可能性があります。は画像の品質を低下させます。より良い方法は、元の画像を持つものと直方体を描いたものの2つのイメージリストを持つことです。

    矩形の目的は、ある種の「アクティブ」状態を示すことであると思われます。それはボタンのDownプロパティでも実現できます。

  • +0

    マイボタンには、RichEditコントロール(Microsoft Wordのフォントカラーボタンの下線に似ています)のハイライトテキストの選択された前後の色が反映されます。ありがとうございました。問題が解決しました。 – Rudi

    +0

    問題は何だったのですか?W10は24ビットビットマップをサポートしていません。 –

    +0

    @Sertac Akyuz私はWindows 10で動作するDelphi 10を使用しています。画像リストの色の濃さはcl24Bitに設定されており、ランタイムテーマは無効になっています。これらの設定を使用すると、手順によって目的の結果が得られます。 Windowsのプロパティダイアログを使用して、イメージリストにインポートされたビットマップを調べると、ビット深度が24であることがわかります。したがって、Windows 10/Delphi 10は状況をよく処理しているようです。 – Rudi

    関連する問題