0

4 つのパネルを持つ TStatusbar があり、そのうちの 1 つが OwnerDraw スタイルに設定されています。

イベント ハンドラで、カスタム描画を上に追加する前に、デフォルトの paint メソッドを使用しonDrawPanel()たいと思います。TStatusbar

onDrawPanel ハンドラーからデフォルト ハンドラーを呼び出す方法はありますか?

編集 まあ、修正を見つけましたが、システムフォントが変更された場合の信頼性はわかりません。デフォルトのハンドラーはパネル テキストのみを描画するため、TextRect を単純に呼び出すだけで同じことができます。

StatusBar->Canvas->TextRect(Rect,Rect.Left,Rect.Top,Panel->Text);

しかし、システム フォント、言語などがデフォルトでない場合、これがどの程度うまく機能するかはわかりません。

元の質問に対する回答を引き続き取得したいと思います。

4

1 に答える 1

1

TStatusBar は標準の WinApi ウィンドウ クラスのラッパーであるため、デフォルトでは OS によって描画が行われます。WinApi 関数、または SB_SETTEXT などのメッセージを調べる必要があります。

MSDN でこれを確認してください: SB_SETTEXT メッセージ

編集:

DrawStatusText が適切なWinApi関数のようです。ボーダーが必要ない場合は、SBT_NOBORDERS フラグを指定する必要があります。

于 2014-01-25T20:10:17.647 に答える