明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用Delphi制作動(dòng)態(tài)菜單

[摘要]所謂動(dòng)態(tài)菜單是指菜單項(xiàng)隨著程序的操作變化而變化,F(xiàn)在,我們用Delphi來(lái)實(shí)現(xiàn)這一功能,具體步驟如下:  1.首先,確定動(dòng)態(tài)菜單的數(shù)據(jù)來(lái)源,即要確定動(dòng)態(tài)菜單標(biāo)題是來(lái)自Windows的系統(tǒng)注冊(cè)表,還是來(lái)自一個(gè)數(shù)據(jù)庫(kù),或者是來(lái)自一個(gè)子目錄,主要由程序的功能而定。這里假設(shè)主窗口名為MainForm,上面...
所謂動(dòng)態(tài)菜單是指菜單項(xiàng)隨著程序的操作變化而變化,F(xiàn)在,我們用Delphi來(lái)實(shí)現(xiàn)這一功能,具體步驟如下:
  1.首先,確定動(dòng)態(tài)菜單的數(shù)據(jù)來(lái)源,即要確定動(dòng)態(tài)菜單標(biāo)題是來(lái)自Windows的系統(tǒng)注冊(cè)表,還是來(lái)自一個(gè)數(shù)據(jù)庫(kù),或者是來(lái)自一個(gè)子目錄,主要由程序的功能而定。這里假設(shè)主窗口名為MainForm,上面已有主菜單,其動(dòng)態(tài)菜單的數(shù)據(jù)源是一個(gè)String(字符串)類型的變量,名稱為SubMenuItemSource。
  2.確定生成的動(dòng)態(tài)菜單的功能,即定義動(dòng)態(tài)菜單的OnClick()事件,例如,動(dòng)態(tài)菜單標(biāo)題來(lái)自一個(gè)磁盤(pán)文件名時(shí),那么程序在響應(yīng)OnClick()事件時(shí),可能的操作是要打開(kāi)選中的文件。因此,對(duì)菜單所在的主窗口模塊的單元程序的數(shù),據(jù)我們需要定義Type后添加一個(gè)自定義的事件MyClick()。
  然后,需要編寫(xiě)如下MyClick()事件的具體內(nèi)容:
  procedure TMainForm.MyClick(Sender: TObject);//動(dòng)態(tài)菜單OnClick事件響應(yīng)
  begin
  Show.Message(TMenuItem(Sender).Caption);//顯示選中的動(dòng)態(tài)菜單標(biāo)題,
  end;
  這里調(diào)用的ShowMessage標(biāo)準(zhǔn)例程(在Dialogs.pas中)顯示TMenuItem(Sender).Caption,它就是選擇的菜單項(xiàng)的Caption,類似用TMenuItem(Sender).Name則是選擇菜單項(xiàng)的Name。
  3.編寫(xiě)程序?qū)?dòng)態(tài)菜單標(biāo)題添加到指定的菜單頂下,并將其與OnClick()事件聯(lián)系起來(lái)。將以下程序段添加到MainForm的OnCreate事件過(guò)程中,可在程序啟動(dòng)時(shí)完成動(dòng)態(tài)菜單的動(dòng)態(tài)生成:
  procedure TMainForm.FormCreate(Sender: TObject);
  var
  addSubItem:TMenuItem;
  i:Integer;
  begin
  for i:=0 to N do //N等于要添加的動(dòng)態(tài)菜單數(shù)目,需事先定義為數(shù)值型變量,并賦值
  begin
  addSubItem:= TMenuItem.Create(Self);
  addSubItem.Name := ′A′+I(xiàn)ntToStr(i);
  addSubItem.Caption := SubMenuItemSource; // 步驟1的SubMenuItemSource應(yīng)先賦值
  FileOpenItem.Add(addSubItem); //在名稱為FileOpenItem的菜單項(xiàng)下添加子菜單
  addSubItem.OnClick:=MyClick; // 步驟2的MyClick(),自定義菜單要響應(yīng)的事件
  end
  end;