var MypopUpitems: array[0..3] of TMenuitem;procedure TForm1......(Sender: TObject); begin MypopUpitems[1] := TMenuItem.Create(Self); MypopUpitems[1].Caption := 'test'; PopupMenu1.Items.Add(mypopupitems[1]); MypopUpitems[1].OnClick:=MyPopupHandler; end; procedure TForm1.MyPopupHandler(Sender: Tobject); begin ....处理 end;
你可以将要添加的个数读出,再循环: var MypopUpitems: array of TMenuitem;procedure TForm1......(Sender: TObject); begin setlengh(Mypopupitems, N//要加的个数); for i := 0 to N do begin MypopUpitems[i] := TMenuItem.Create(Self); MypopUpitems[i].Caption := ....; PopupMenu1.Items.Add(mypopupitems[1]); MypopUpitems[i].OnClick:=MyPopupHandler; end end;
procedure TForm1.MyPopupHandler(Sender : Tobject); begin if MypopUpitems[i].checked then MypopUpitems[i].checked:=false else MypopUpitems[i].checked:=true; end; 如何知道我所单击menuitem的i的值
procedure TForm1.MyPopupHandler(Sender : Tobject); begin if MypopUpitems.checked then MypopUpitems.checked:=false else MypopUpitems.checked:=true; end;
其实就是生成动态菜单。csdn上有好多例子,我就不copy了。
你可以试一下如下 (sender as tmenuitem).checked
var n:string; begin n:=(sender as tmenuitem).caption label1.caption:=n; end;
MypopUpitems: array[0..3] of TMenuitem;procedure TForm1......(Sender: TObject);
begin
MypopUpitems[1] := TMenuItem.Create(Self);
MypopUpitems[1].Caption := 'test';
PopupMenu1.Items.Add(mypopupitems[1]);
MypopUpitems[1].OnClick:=MyPopupHandler;
end; procedure TForm1.MyPopupHandler(Sender: Tobject);
begin
....处理
end;
var
MypopUpitems: array of TMenuitem;procedure TForm1......(Sender: TObject);
begin
setlengh(Mypopupitems, N//要加的个数);
for i := 0 to N do
begin
MypopUpitems[i] := TMenuItem.Create(Self);
MypopUpitems[i].Caption := ....;
PopupMenu1.Items.Add(mypopupitems[1]);
MypopUpitems[i].OnClick:=MyPopupHandler;
end
end;
begin
if MypopUpitems[i].checked then
MypopUpitems[i].checked:=false
else
MypopUpitems[i].checked:=true;
end;
如何知道我所单击menuitem的i的值
begin
if MypopUpitems.checked then
MypopUpitems.checked:=false
else
MypopUpitems.checked:=true;
end;
(sender as tmenuitem).checked
n:string;
begin
n:=(sender as tmenuitem).caption
label1.caption:=n;
end;