Firefox32のように、ポップアップメニューの1項目に4つのボタンを描画して、
そのそれぞれのボタンはマウスのEnter/Leaveに反応してホット描画というのをやりたいのですが、どうすればTMenuItemを再描画できますか?
TMenuItem.MenuChanged(True)を行えば一応可能なのですが、メニューが再構築されるため激しくチラつき、使い物になりません。
テスト用のソース
http://www1.axfc.net/u/3332551.zip
よろしくお願いします。
[超高校生級] の方にレスするのは畏れ多く,僭越ではありますが,
http://d.hatena.ne.jp/keyword/%C4%B6%B9%E2%B9%BB%B5%E9
MenuChanged はメニュー項目の構造の変更の場合に,内部で実行されるメソッドです.
PopupMenu のウィンドウに対して RedrawWindow を実行すれば,
チラつきが少なくなると思いますよ.
http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.Menus.TMenu.MenuChanged
仰る通り、RedrawWindowで解決することができました。
ありがとうございました。
プロジェクトをダウンロードして,Delphi を起動して確認するのは面倒だ.
という方に,MenuChanged と RedrawWindow による違いを確認できるように,
実行ファイル (EXE) だけを UP しておきました.
興味のある方はどうぞ.
Windows 7 U64(SP1) + Delphi XE(UP1) Pro で作成しています.
http://mrxray.on.coocan.jp/Delphi/zip/PopupMenu_ImageItem_QandA.zip
ツイート | ![]() |