这是我写的动态生成菜单的代码,想把这段程序做成一个函数,不知道括号里的参数怎么设定,请高手帮帮忙,先谢了!
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;
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;
解决方案 »
- cxgrid的使用问题
- DELPHI+科密KC35考勤机,TCP/IP通讯
- 一个令人费解的问题,大家帮帮忙吧
- 会用Mapx控件的请帮忙一下
- 关于第三方控件的问题
- 这个括号到底起什么作用的?
- 一篇来自Chinaunix.net的精华版文章---你尽力了吗??在此推荐给delphi版的兄弟们看看,看后你是否觉得你已经尽到力了?原贴奉上供大家一
- 请各位推荐经典的Delphi电子书籍,以及下在地址
- web broker+internetExpress做的系统中怎么样设置权限呢?
- 关于数据库查询器的小问题,
- [菜鸟问题]如何把从数据库中找到的某个表的一个字段的所有数据附给变量?然后怎么比较?
- 帮我看看哪,我写的代码,哪里有错,d7+sqlserver2000
[
把里头经常变动的内容作为参数就可以了啊。
类型就是你现在使用的对应数据(变量)的类型。
]
自己遵循这个原则就可以了如果变量是控件可以用VAR或指针
本来这个就是一个函数的
只不过它没有参数罢了。
======================楼主,这就是函数,还带了返回值的boolean的,只是参数为空而已
这样是可以用的!!!没必要了