不知道你问的是什么,我是这样创建动态菜单的:
ChangeSkinPopItems:array[0..5] of TMenuItem; //换肤菜单GetChildDir(ExtractFilePath(paramstr(0))+'skin\*.*',SkinList); //取得皮肤的所有样式
for ChangeSkinPopi:=0 to SkinList.Count-1 do
begin
ChangeSkinPopItems[ChangeSkinPopi]:=TMenuItem.Create(Self);
ChangeSkinPopMenu.Items.Add(ChangeSkinPopItems[ChangeSkinPopi]);
ChangeSkinPopItems[ChangeSkinPopi].Caption:=SkinList.Strings[ChangeSkinPopi];
ChangeSkinPopItems[ChangeSkinPopi].OnClick:=ChangeSkinPopMenuHandler;
end;procedure TMainM.ChangeSkinPopMenuHandler(Sender:TObject);
begin
with Sender as TMenuItem do
begin
//我的过程
end;
end;你说读一定格式的文本,那用Ini就很方便了
ChangeSkinPopItems:array[0..5] of TMenuItem; //换肤菜单GetChildDir(ExtractFilePath(paramstr(0))+'skin\*.*',SkinList); //取得皮肤的所有样式
for ChangeSkinPopi:=0 to SkinList.Count-1 do
begin
ChangeSkinPopItems[ChangeSkinPopi]:=TMenuItem.Create(Self);
ChangeSkinPopMenu.Items.Add(ChangeSkinPopItems[ChangeSkinPopi]);
ChangeSkinPopItems[ChangeSkinPopi].Caption:=SkinList.Strings[ChangeSkinPopi];
ChangeSkinPopItems[ChangeSkinPopi].OnClick:=ChangeSkinPopMenuHandler;
end;procedure TMainM.ChangeSkinPopMenuHandler(Sender:TObject);
begin
with Sender as TMenuItem do
begin
//我的过程
end;
end;你说读一定格式的文本,那用Ini就很方便了
比如说:
浏览器的菜单在我所说的一定格式的文本中是这样的:
***************************
[文件(&F)]
新建(&N)
.窗口
._
.邮件
打开(&O)
编辑(&D)
.......
发送(&E)
.电子邮件页面
.电子邮件连接
...........
关闭(&C)**************************
.........:表示省略
[文件(&F)]
F1=新建(&N)
F1-1=窗口
F1-2=_
F1-3=邮件
F2=打开(&O)
F3=编辑(&D)
.......
F10=发送(&E)
F10-1=电子邮件页面
F10-2=电子邮件连接
...........
F15=关闭(&C)然后用Ini操作就比较方便了哈(呵呵,可能方法比较笨咯)继续关注ing^_*
var
newitem:tmenuitem;
begin
newitem:=tmenuitem.Create(self);
newitem.Caption:='动态菜单的caption';
//定义新生成菜单的click功能
newitem.OnClick:=Your_Define_Prog;//将动态菜单项的Click指向你自定义程序
Your_Menu.Add(newitem);
end;//动态菜单的click功能
procedure TMainForm.Your_Define_Prog;
begin
你的动态菜单代码;
end;
你只要通过读你的文件,得到‘动态菜单的caption'就可以了。
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;