所謂菜單是指菜單項隨著(zhù)的操作變化而變化?,F在,我們用Delphi來(lái)實(shí)現這一功能,具體步驟
1.首先,確定菜單的數據,即要確定菜單標題是來(lái)自Windows的系統注冊表,還是來(lái)自一個(gè)數據庫,或者是來(lái)自一個(gè)子目錄,主要由的功能而定。這里假設主窗口名為MainForm,上面已有主菜單,其菜單的數據源是一個(gè)String(字符串)類(lèi)型的變量,名稱(chēng)為SubMenuItemSource。
2.確定生成的菜單的功能,即定義菜單的OnClick()事件,例如,菜單標題來(lái)自一個(gè)磁盤(pán)文件名時(shí),那么在響應OnClick()事件時(shí),可能的操作是要打開(kāi)選中的文件。因此,對菜單所在的主窗口模塊的單元的數,據我們需要定義Type后添加一個(gè)自定義的事件MyClick()。
然后,需要編寫(xiě)如下MyClick事件的具體內容:
procedure TMainForm.MyClick(Sender: TObject);//菜單OnClick事件響應
begin
Show.Message(TMenuItem(Sender).Caption);//顯示選中的菜單標題,
end;
這里調用的ShowMessage標準例程(在Dialogs.pas中)顯示TMenuItem(Sender).Caption,它就是選擇的菜單項的Caption,類(lèi)似用TMenuItem(Sender).Name則是選擇菜單項的Name。
3.編寫(xiě)將菜單標題添加到指定的菜單頂下,并將其與OnClick()事件聯(lián)系起來(lái)。將以下段添加到MainForm的OnCreate事件過(guò)程中,可在啟動(dòng)時(shí)完成菜單的生成:
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); //在名稱(chēng)為FileOpenItem的菜單項下添加子菜單
addSubItem.OnClick:=MyClick; // 步驟2的MyClick(),自定義菜單要響應的事件
end
end;
聯(lián)系客服