这是我写的动态生成菜单的代码,想把这段程序做成一个函数,不知道括号里的参数怎么设定,请高手帮帮忙,先谢了!
function dynamicmenu():boolean;
var
  a,b:string;
  i,n:integer;
  TBSubmenuItemTech: TTBSubmenuItem;  //定义子菜单
  TBItemTech: TTBItem;  //定义菜单项
begin
  //创建子菜单
  TBSubmenuItemTech := TTBSubmenuItem.Create(self);
  TBSubmenuItemTech.Caption :='工艺名称';
  //将子菜单插入指定位置
  i := 2;
  TBToolbarMainMenu.Items.Insert(i, TBSubmenuItemTech);
  //由单位过滤出单位编号  
  a:=frmmain.fcStatusBar1.Panels[2].Text;
  datamodule1.CDSBaseUnit.Filter:='单位'+ ' like ' +'''' + a +'''';
  datamodule1.CDSBaseUnit.Filtered:=true;
  datamodule1.CDSBaseUnit.Open;
  //过滤出工艺代码
  datamodule1.CDSBaseUnitTech.Close;
  datamodule1.CDSBaseUnitTech.CommandText :='select CODE_UNIT AS 单位编号,CODE_TECHNICS AS 工艺代码 from Base_UnitTech where CODE_UNIT='''+datamodule1.CDSBaseUnit.FieldByName('单位编号’).AsString+'''';
  datamodule1.CDSBaseUnitTech.Open;  //在工艺表里,由多个工艺代码过滤出所对应的工艺名称   
  if datamodule1.CDSBaseUnitTech.RecordCount>0 then
     with datamodule1.CDSBaseUnitTech  do
        begin
          n:= datamodule1.CDSBaseUnitTech.RecordCount;
          while n>0 do
             begin
               b:=datamodule1.CDSBaseUnitTech.FieldByName(‘工艺代码’).AsString;
               datamodule1.CDSBaseTech.Filter := ‘工艺代码’+ ' like ' + '''' + b +'''';
               datamodule1.CDSBaseTech.filtered := true;
               datamodule1.CDSBaseTech.Open;
               TBItemTech := TTBItem.Create(self);
               TBItemTech.Caption:=datamodule1.CDSBaseTech.FieldByName(‘工艺名称’).AsString;
               TBToolbarMainMenu.Items[i].Add(TBItemTech);
               datamodule1.CDSBaseUnitTech.Next;
               n := n - 1;
             end;
        end;end;

解决方案 »

  1.   

    不知道哪些是你需要更改的变量,别人没发帮你
    [
    把里头经常变动的内容作为参数就可以了啊。
    类型就是你现在使用的对应数据(变量)的类型。
    ]
    自己遵循这个原则就可以了如果变量是控件可以用VAR或指针
      

  2.   

    function dynamicmenu():boolean;
    本来这个就是一个函数的
    只不过它没有参数罢了。
      

  3.   

    这不已是函数了,?
    ======================楼主,这就是函数,还带了返回值的boolean的,只是参数为空而已
    这样是可以用的!!!没必要了