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

解決


にしの  2004-06-12 01:00:33  No: 9393

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

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

チェックし忘れ。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加