我有一個彈出菜單,我希望其中一個項目打開一個帶有動態創建列表的子菜單(它是用戶定義的標誌列表)。下面是我如何創建菜單項(FlagAs
是菜單項我要附加的子菜單):在Delphi中動態創建一個子菜單
lNewMenuItems: array[0..flagCount] of tMenuItem;
for I := 0 to flagCount do
begin
{ Create a new menu item }
lNewMenuItems[I] := tMenuItem.Create(FlagAs);
lNewMenuItems[I].Caption := FlagNames[I];
lNewMenuItems[I].Tag := I; { Tag with the flag number }
lNewMenuItems[I].OnClick := miFlagClick;
end;
FlagAs.Add(lNewMenuItems);
的miFlagClick
處理程序只是切換其發送者的檢查狀況:
procedure TMyForm.miFlagClick(Sender: TObject);
begin
(Sender as tMenuItem).Checked := not (Sender as tMenuItem).Checked;
end;
這些項目完美添加,但當我點擊它們時,它們不會被檢查。事件處理程序被稱爲編輯:發件人是正確的菜單項,但下次打開菜單時不會出現複選標記。
我在做什麼錯?還是我以錯誤的方式去了解菜單創建? (注意:flagCount
在將來可能會改變,但在代碼中被定義爲一個常量)
編輯:上面沒有實際工作 - 見下文
我正在使用德爾福2007年,但(作爲我的回答下面)這是我的錯誤在代碼中的其他地方。對不起,浪費你的時間。 – 2009-02-16 11:47:51
幫助他人絕不是浪費時間。 – 2009-02-16 11:50:39