ObjectARX Version: 2010
Language: C#
Hi, I am using PopMenuItem (MenuBar item) by loading custom CUIX.
But I can only load it to the menubar.
I would like to enable or disable the menu item according to the system status.
For example, if no drawing document is open, "Save" menuitem in the "File" menu becomes disable (non-clickable).
And as I open or create a document, "Save" menuitem becomes enable (clickable).
I want to use this for my custom menubar menu.
How could I do this?
If you could give me a sample code snippet, it would be appreciated.
Thank you in advance,
Jake
PopupMenuItem has property Enable, which can help you.
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
It looks like, in ARX 2010, PopMenuItem does not have "Enable" property.
I did not write about the class Autodesk.AutoCAD.Customization.PopMenuItem, but the class Autodesk.AutoCAD.Interop.PopMenuItem wich can be accessible with Autodesk.AutoCAD.Interop.dll:
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
I see.. I see..
Did not know there was Autodesk.AutoCAD.Interop.PopMenuItem as well.
I will check that out.
Thank you.
Disable/enable menu item Save:
using System; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Interop; using AcRx = Autodesk.AutoCAD.Runtime; using AcAp = Autodesk.AutoCAD.ApplicationServices; using AcDb = Autodesk.AutoCAD.DatabaseServices; using AcGe = Autodesk.AutoCAD.Geometry; using AcEd = Autodesk.AutoCAD.EditorInput; using AcX = Autodesk.AutoCAD.Interop; [assembly: CommandClass(typeof(Rivilis.MenuTest))] namespace Rivilis { public class MenuTest { [CommandMethod("ToggleSave")] public void ToggleSave() { AcX.AcadApplication app = AcAp.Application.AcadApplication as AcX.AcadApplication; if (app != null) { AcX.AcadMenuGroups groups = app.MenuGroups; foreach (AcX.AcadMenuGroup group in groups) { // We want work only with menugroup ACAD if (group.Name.ToUpper().CompareTo("ACAD") == 0) { AcX.AcadPopupMenus menus = group.Menus; if (menus.Count > 0) { foreach (AcX.AcadPopupMenu menu in menus) { foreach (AcX.AcadPopupMenuItem menuitem in menu) { string label = menuitem.Label; string caption = menuitem.Caption; string tagstring = menuitem.TagString; if (tagstring.ToUpper().CompareTo("ID_SAVE") == 0) { // Toggle status of PopupMenuItem menuitem.Enable = !menuitem.Enable; } } } } } } } } } }
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn