DELPHI 动态生成POPUPMENU弹出式菜单
提示:STACK OVERFLOW 溢出
不知是那错了?
procedure TMainFrm.PMQUICKPopup(Sender: TObject);
Var subitem:TMenuItem;
i,c:integer;
tmp:TADOQuery;
begin
if self.TreeIsChange=False then exit;
PMQUICK.Items[9].Clear;
{ for i:=0 to TreeView1.Items.Count-1 do
begin
if Treeview1.Items[i].Parent=nil then
PMQUICK.Items[9].Add( CreatePopMenu(TreeView1.Items[i]);
end;
}
tmp:=TADOQuery.Create(nil);
tmp.Connection:=FrmQCDM.ADOCon;
tmp.SQL.Clear;
tmp.sql.Text:='select * from contactgroup where parentid=0';
tmp.Open;
while not tmp.Eof do
begin
subitem:=TMenuItem.Create(nil);
subitem.Caption:=tmp.fieldbyname('cname').AsString; //菜单标题
PMQUICK.Items[9].Add( subitem );
subitem.Add(CreatePopMenu(tmp.fieldbyname('id').AsInteger));
tmp.Next;
end;
tmp.Free;
TreeIsChange:=False;
end;
function TMainFrm.CreatePopMenu(NodeID:Integer):TMenuItem;
var tmp:TADOQuery;
MenuItem:TMenuItem;
begin
tmp:=TADOQuery.Create(nil);
tmp.Connection:=FrmQCDM.ADOCon;
tmp.Close;
tmp.SQL.Clear;
tmp.SQL.Text:='select *from contactgroup where parentid='+InttoStr(NodeId);
tmp.Open;
while not tmp.Eof do
begin
MenuItem:=TMenuItem.Create(nil);
MenuItem.Caption:=tmp.fieldbyname('cname').AsString;
MenuItem.Add( CreatePopMenu(tmp.fieldbyname('id').AsInteger) );
tmp.Next;
end;
Result:=MenuItem;
tmp.Free;
end;