时间: 2021-07-31 作者:daque
所谓动静菜单是指菜单项跟着步调的操纵变革而变革。此刻,咱们用delphi来实行这一功效,简直办法如次: 1.开始,决定动静菜单的数据根源,即要决定动静菜单题目是来自windows的体例备案表,仍旧来自一个数据库,大概是来自一个子目次,重要由步调的功效而定。这边假如主窗口名为mainform,上头已有主菜单,其动静菜单的数据源是一个string(字符串)典型的变量,称呼为submenuitemsource。 2.决定天生的动静菜单的功效,即设置动静菜单的onclick()事变,比方,动静菜单题目来自一个磁盘文献名时,那么步调在相应onclick()事变时,大概的操纵是要翻开选中的文献。所以,对菜单地方的主窗口模块的单位步调的数,据咱们须要设置type后增添一个自设置的事变myclick()。 而后,须要编写如次myclick()事变的简直实质: procedure tmainform.myclick(sender: tobject);//动静菜单onclick事变相应 begin show.message(tmenuitem(sender).caption);//表露选中的动静菜单题目, end; 这边挪用的showmessage规范例程(在dialogs.pas中)表露tmenuitem(sender).caption,它即是采用的菜单项的caption,一致用tmenuitem(sender).name则是采用菜单项的name。 3.编写步调将动静菜单题目增添到指定的菜单顶下,并将其与onclick()事变接洽起来。将以次步调段增添到mainform的oncreate事变进程中,可在步调启用时实行动静菜单的动静天生: procedure tmainform.formcreate(sender: tobject); var addsubitem:tmenuitem; i:integer; begin for i:=0 to n do //n即是要增添的动静菜单数量,需事前设置为数值型变量,并赋值 begin addsubitem:= tmenuitem.create(self); addsubitem.name := ′a′+inttostr(i); addsubitem.caption := submenuitemsource; // 办法1的submenuitemsource应先赋值 fileopenitem.add(addsubitem); //在称呼为fileopenitem的菜单项下增添子菜单 addsubitem.onclick:=myclick; // 办法2的myclick(),自设置菜单要相应的事变 end end;