2015-11-02 62 views
3

我正在使用C++ Builder来开发应用程序。 我想遍历MainMenu中的所有TMenuItems,因为我想更改其中一些的标题。 我用这个代码:如何更改C++ builder中TMenuItem的可见性?

int numAction = MainMenu1->Items->Count; 
for (int i=0;i<numAction;i++) 
{ 
     TMenuItem* tmpAction = &MainMenu1->Items[i]; 
     tmpAction->Caption = "Test Caption"; 
} 

,我认为它应该工作,但我总是得到一个应用程序崩溃。有了这样的消息:

调试异常通知项目PROJECT1.EXE模块vcl120.bpl引发的异常类EAccessViolation有消息访问冲突在地址 501C380E。读取地址0000003C。

任何帮助将不胜感激。

+2

尝试'MainMenu1-> Items-> Items [i]'。 –

回答

2

TMenu具有类型的属性

_property TMenuItem* Items 

这又具有阵列类型的属性

__property TMenuItem* Items[int Index] 

所以,该溶液是(如纳米已经注意到)写

TMenuItem* tmpAction = MainMenu1->Items->Items[i]; 
+0

谢谢!它的工作非常好... – Tirma

+2

或者,'TMenuItem'在C++中有一个'operator []',这是Tirma最初可能试图调用的。调用该运算符的正确语法是'TMenuItem * tmpAction =(*(MainMenu1-> Items))[i];'不如调用'MainMenu1-> Items-> Items []'更加优雅。 –