
使用Delphi XE2 / w7-32bit **
如何重现:
使用TActionMainMenubar构建菜单,向其添加一些 *** 作:
file | options | help - New - Open - Save -Exit
为所有 *** 作分配一个空方法
procedure TfrmMain.ActionExecute(Sender: TObject); begin // end;
现在运行应用程序并尝试单击选项或帮助元素.
现在单击表单,但菜单元素仍然按下!
有任何变通方法吗?
upd:看截图,菜单元素是down,但是鼠标光标不在菜单上,而autocheck是false,并且检查也是false.
这里不是表单上的任何色彩映射,经理风格是平台默认
像这样创建自定义类:
type TFastthemedbutton = class(TthemedMenubutton) protected procedure DrawBackground(var PaintRect: TRect); overrIDe;end;
…
procedure TFastthemedbutton.DrawBackground(var PaintRect: TRect);const MenuStates: array[Boolean {MouseInControl},Boolean {Selected}] of TthemedMenu = ((tmMenubarItemnormal,tmMenubarItempushed),(tmMenubarItemHot,tmMenubarItempushed));var BannerRect: TRect; StartCol,EndCol: Tcolor;begin Canvas.Brush.color := Actionbar.colorMap.color; Canvas.Font := Actionbar.Font; StyleServices.DrawElement(Canvas.Handle,StyleServices.GetElementDetails(MenuStates[MouseInControl,(State=bsDown)]),PaintRect);end; 现在你TActionMainMenubar.OnGetControlClass添加这个简单的代码,并设置为BUGgy actionclIEnts tag = -100
procedure TfrmActions.ActionMainMenubar1GetControlClass(Sender: TCustomActionbar; AnItem: TActionClIEnt; var ControlClass: TCustomActionControlClass);begin if ControlClass.inheritsFrom(TCustomMenubutton) and then begin if (AnItem.Tag =-100) and (ControlClass = TthemedMenubutton) then ControlClass := TFastthemedbutton; end;end;
好吧,现在所有带有-100标签的根项目都按我们的意愿工作
总结以上是内存溢出为你收集整理的delphi – 解决TActionMainMenuBar绘图错误,其中项目未取消选择全部内容,希望文章能够帮你解决delphi – 解决TActionMainMenuBar绘图错误,其中项目未取消选择所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)