ActionManager.Styleの値によって、
Standardの場合にはTStandardMenuPopup、
XP Styleの場合にはTXPStylePopupMenu
を使ってPopupMenuを作成しています。
usesの順序が、
StdStyleActnCtrls, XPStyleActnCtrls
の場合、XP StyleにしてTXPStylePopupMenuを使用しても、灰色のメニューが出てしまいます。
また、
usesの順序が、
XPStyleActnCtrls, StdStyleActnCtrls
の場合、StandardにしてTStandardMenuPopupを使用すると、背景が白いメニューが表示されます。
TPopupMenuにもTActionManagerのStyleを効かせたいのですが、何か方法はありませんか?
Delphi7 Update1で修正されているのでしょうか。
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;
チェックし忘れ。
ツイート | ![]() |