实在不知道该怎么改了 下面的代码只能创建菜单的大项(比如 “文件”..“打开”..“新建”的“文件”那一项) 可是哦想在这个大项下加几个小项(“文件”..“打开”..“新建”的“新建”那一项) 然后单击事件也是在小项里进行的 哥哥姐姐们教教啊procedure TForm1.FormCreate(Sender: TObject);
var a:TMenuItem;
begin
a:=TMenuItem.Create(self);
a.Caption:='自定义菜单';
a.OnClick:=MyProc;
MainMenu1.Items.Add(a);
end;procedure TForm1.MyProc(Sender: TObject);
begin
//
end;
var a:TMenuItem;
begin
a:=TMenuItem.Create(self);
a.Caption:='自定义菜单';
a.OnClick:=MyProc;
MainMenu1.Items.Add(a);
end;procedure TForm1.MyProc(Sender: TObject);
begin
//
end;
中括号中的数字可以改变,表示不同的层次不同的项
多此一举
var
tTemp: TADODataSet;
tTempSub: TADODataSet;
strTemp: TStringList;
sTemp: String;
i: Integer;
sSubCaption, sSubName: String;
begin
//
tTemp := TADODataSet.Create(Self);
tTempSub := TADODataSet.Create(Self);
strTemp := TStringList.Create;
try
tTemp.Connection := ADO;
tTempSub.Connection := ADO; SelectData(tTemp, 'select * from SessionList');
if tTemp.Active and not (tTemp.Bof and tTemp.Eof) then
begin
tTemp.First;
while not tTemp.Eof do
begin
mnuSessListNew := TMenuItem.Create(mnuSessList);
mnuSessListNew.Caption := tTemp.fieldbyname('SessName').AsString;
mnuSessListNew.Name := 'mnuSessList' + tTemp.fieldbyname('SessID').AsString; sSubCaption := '一步到位';
sSubName := mnuSessListNew.Name + 'OneStep';
mnuSessListNew.Add(NewItem(sSubCaption, 0, False, True, nil, 0, sSubName));
mnuSessListNew.Add(NewLine);
sTemp := tTemp.fieldbyname('SessStep').AsString;
strTemp.Text := StringReplace(sTemp, ',', #13#10, [rfReplaceAll]);
if strTemp.Count > 0 then
begin
for i := 0 to strTemp.Count - 1 do
begin
SelectData(tTempSub, 'select * from SQLList where SQLID = ' + strTemp.Strings[i]);
sSubCaption := tTempSub.fieldbyname('SQLName').AsString;
sSubName := mnuSessListNew.Name + tTempSub.fieldbyname('SQLID').AsString;
mnuSessListNew.Add(NewItem(sSubCaption, 0, False, True, mnuSessListSubClick, 0, sSubName));
end;
end; mnuSessList.Add(mnuSessListNew);
tTemp.Next;
end;
end;
finally
tTemp.Free;
tTempSub.Free;
strTemp.Free;
end;
end;
Function TVTSMenuII.DisplaySubMenus(ParentIndex:integer;TopMenu : TMenuItem):Boolean;
var
i :integer ;
tmpitem : TMenuItem;
begin
Result := false ;
for i := 0 to count - 1 do
begin
if Items[i].Flag then continue ;
if Items[i].UpMenuID = Items[ParentIndex].MenuID then
begin
tmpitem := TMenuItem.Create(TopMenu.Owner);
tmpitem.Caption := Items[i].MenuText;
tmpitem.Name := Items[i].MenuName ;
tmpitem.Visible := true ;
tmpitem.Enabled := true ;
tmpitem.GroupIndex := Items[i].GroupIndex ;
TopMenu.Add(tmpitem);
Items[i].Flag := true ;
if Items[i].ProcName <> '' then
tmpitem.OnClick := TMenuProcs.GetProc(Items[i].ProcName ,tmpitem);
DisplaySubMenus(i, tmpitem);
Result := true ;
end;
end;
end;