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

怎么在Delphi中制作“動態(tài)選單”

[摘要]所謂動態(tài)選單是指選單項(xiàng)隨著程序的操作變化而變化,F(xiàn)在,我們用Delphi來實(shí)現(xiàn)這一功能,具體步驟如下:   1.首先,確定動態(tài)選單的數(shù)據(jù)來源,即要確定動態(tài)選單標(biāo)題是來自Windows的系統(tǒng)注冊表,還...
所謂動態(tài)選單是指選單項(xiàng)隨著程序的操作變化而變化,F(xiàn)在,我們用Delphi來實(shí)現(xiàn)這一功能,具體步驟如下:

  1.首先,確定動態(tài)選單的數(shù)據(jù)來源,即要確定動態(tài)選單標(biāo)題是來自Windows的系統(tǒng)注冊表,還是來自一個數(shù)據(jù)庫,或者是來自一個子目錄,主要由程序的功能而定。這里假設(shè)主窗口名為MainForm,上面已有主選單,其動態(tài)選單的數(shù)據(jù)源是一個String類型的變量,名稱為SubMenuItemSource。

  2.確定生成的動態(tài)選單的功能,即定義動態(tài)選單的OnClick()事件,例如,動態(tài)選單標(biāo)題來自一個磁盤文件名時,那么程序在響應(yīng)OnClick()事件時,可能的操作是要打開選中的文件。因此,對選單所在的主窗口模塊的單元程序的數(shù)據(jù),我們需要定義Type后添加一個自定義的事件MyClick()。

  然后,需要編寫如下MyClick()事件的具體內(nèi)容:

  procedure TMainForm.MyClick(Sender: TObject);//動態(tài)選單OnClick事件響應(yīng)

  begin

  Show.Message(TMenuItem(Sender).Caption);//顯示選中的動態(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.編寫程序?qū)討B(tài)選單標(biāo)題添加到指定的選單項(xiàng)下,并將其與OnClick()事件聯(lián)系起來。將以下程序段添加到MainForm的OnCreate事件過程中,可在程序啟動時完成動態(tài)選單的動態(tài)生成:

  procedure TMainForm.FormCreate(Sender: TObject);

  var

  addSubItem:TMenuItem;

  i:Integer;

  begin

  for i:=0 to N do //N等于要添加的動態(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;