8

アプリケーションの Outlook 2013 左ペイン ツリー ビュー メニューをエミュレートしようとしています。シンプルなフォントと背景のプロパティを変更したいだけなので、CustomDraw を使用しています。

ここに私が欲しいものがあります:

Outlook 2013 のサイドバー メニュー

ただし、選択されたノードとホット トラックされたノードの両方について、常にデフォルトで選択された図面を取得します。これが通常の動作なのか、OS (Windows 8) に関連するものなのかを確認するための Windows 7 または XP はありません。

ここに私が得ているものがあります:

Outlook 2013 スタイルのサイドバー メニューの不適切な模倣

これが私のコードです:

procedure TMainForm.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Node.Level = 1 then
    Sender.Canvas.Font.Size := Sender.Canvas.Font.Size + 2;

  if cdsHot in State then
    Sender.Canvas.Brush.Color := $00F7E6CD
  else if (cdsSelected in State) or (cdsFocused in State) or
    (cdsChecked in State) then
    Sender.Canvas.Brush.Color := $00F2F2F2
  else
    Sender.Canvas.Brush.Color := $00DEDEDE;
  DefaultDraw := true;
end;

選択したアイテムとホットなアイテムに異なる色の背景を描画するにはどうすればよいですか?

4

1 に答える 1