[D7]TActionManagerとPopupMenu(Standard/XP Style)

解決


にしの  2004-06-12 01:00:33  No: 9393  IP: [192.*.*.*]

ActionManager.Styleの値によって、
Standardの場合にはTStandardMenuPopup、
XP Styleの場合にはTXPStylePopupMenu
を使ってPopupMenuを作成しています。

usesの順序が、
StdStyleActnCtrls, XPStyleActnCtrls
の場合、XP StyleにしてTXPStylePopupMenuを使用しても、灰色のメニューが出てしまいます。
また、
usesの順序が、
XPStyleActnCtrls, StdStyleActnCtrls
の場合、StandardにしてTStandardMenuPopupを使用すると、背景が白いメニューが表示されます。

TPopupMenuにもTActionManagerのStyleを効かせたいのですが、何か方法はありませんか?
Delphi7 Update1で修正されているのでしょうか。

編集    削除
にしの  2004-06-12 01:24:59  No: 9394  IP: [192.*.*.*]

ColorMapの指定だけでOKでした。

ちなみにこんな感じです。

第1引数にActionManagerオブジェクト。
第2引数に、ActionClientオブジェクト。
# ActMan.ActionBars[0].Items[0]など

できたTCustomActionPopupMenuは、TPopupMenuと同じようにPopupメソッドで表示。
使用し終えたら破棄。

function TAppMenu.CreatePopupMenu(A: TActionManager; ActionClient: TActionClient): TCustomActionPopupMenu;
begin
  if A.Style.GetStyleName = 'Standard' then
  begin
    Result := TStandardMenuPopup.Create(A.ActionBars[0].ActionBar);
  end
  else
  begin
    Result := TXPStylePopupMenu.Create(A.ActionBars[0].ActionBar);
  end;
  Result.ColorMap := A.ActionBars[0].ActionBar.ColorMap;
  Result.ActionClient := ActionClient;
end;

編集    削除
にしの  2004-06-12 01:25:44  No: 9395  IP: [192.*.*.*]

チェックし忘れ。

編集    削除