Delphi的動態選單實現

2022-03-01 07:58:00 字數 2378 閱讀 2600

這裡所謂的動態選單是指選單項是變化的,它隨程式的操作變化而變化。例如在很多應用程式的「檔案」選單下列出了最近多少次曾經使用過的檔名,這是最常見的動態選單用法,

microsoft word

的「檔案」選單就是一例。

動態選單的使用為操作應用程式提供了極大的方便。用

delphi

編寫應用程式我們也可以實現這樣的功能,其步驟如下。

①首先要確定程式的動態選單的資料**(這個資料為乙個字串,就是我們在選單上看到的選單標題,以下稱之為「動態選單標題」),即要確定動態選單標題是來自

windows

的系統登錄檔,還是來自乙個資料庫,還是來自乙個子目錄,這要看程式的功能而定。這裡假設主窗體名為

mainform

,上面已有主選單,其動態選單的資料來源是乙個

string

型別的變數,名稱為

submenuitemsource;②

確定生成的動態選單要做什麼事情,也即要定義動態選單的

onclick()

事件,例如,動態選單標題來自乙個磁碟檔名時,那麼程式在響應

onclick()

事件時可能的操作是要開啟選中的檔案。為此我們要在選單所在的主窗體模組的單元程式的資料定義

type

後新增乙個自定義的事件過程

myclick()

,如下:

unit mainform;

┇type

┇procedure myclick(sender: tobject); //

自定義動態選單響應事件

┇ end;

然後要編寫

myclick

的具體內容,示例如下:

procedure tmainform.myclick(sender: tobject);

//動態選單

onclick

事件響應

begin

showmessage(tmenuitem(sender).caption);//

顯示選中的動態選單標題

, end;

這裡呼叫

showmessage

標準例程(在

dialogs.pas中)

顯示tmenuitem(sender).caption

,它就是選擇的選單項

caption

,類似用

tmenuitem(sender).name

則是選擇的選單項的

name

。當然在這裡

myclick()

(就是onclick

事件)僅顯示乙個選中的選單標題,但你可以改變其內容,使其完成其它你需要的工作,重要的是要知道

tmenuitem(sender).caption;③

編寫程式將動態選單標題新增到指定的選單頂下,並將其與

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; //

步驟①的

submenuitemsource

應先賦值

fileopenitem.add(addsubitem);          //

在名稱為

fileopenitem

的選單項下新增子選單

addsubitem.onclick:=myclick;          // 步驟②

的myclick(),

自定義選單要響應的事件

end

end;

上述方法的特點是在程式編寫中,不需要使用

windows

訊息則可完成動態選單設計。如果要使用

windows

訊息,delphi

也可以做到,但要響應

的onmessage

事件。上述方法同樣可在

c++builder

中使用,只需要改變其語法為

c++。

用Delphi製作動態選單

所謂動態選單是指選單項隨著程式的操作變化而變化。現在,我們用delphi來實現這一功能,具體步驟如下 1 首先,確定動態選單的資料 即要確定動態選單標題是來自windows的系統登錄檔,還是來自乙個資料庫,或者是來自乙個子目錄,主要由程式的功能而定。這裡假設主視窗名為mainform,上面已有主選單...

delphi 入門之《動態建立選單》

delphi 入門之 動態建立選單 由於在專案中用到動態建立選單的功能,簡單的記錄下,主要是根據json的配置檔案動態的建立選單,用到的有乙個json選單配置檔案,json轉換的工具類superobject,具體的 如下所示 1 json配置檔案 choj homeurl menuurl menu ...

實現動態選單的技巧

我的小軟體想實現這樣乙個功能 登陸前,我希望只有 帳戶 幫助 這兩個選單項,帳戶選單有註冊和登陸兩個彈出選單 登陸以後,其他選單才全部出來。但是這樣生成的選單並沒有命令處理機制,解決的辦法是過載oncmdmsg函式 然後根據選單id用switch方式選擇執行函式。總是感覺這種方法很別拗。當然可以一開...