C++ Builder 初學問答 (十)

來源:互聯網
上載者:User

  10.菜單組件
  77)問:菜單是Windows常用的使用者介面。對於一個能夠實際應用的程式,菜單是必不可少的組成部分。C++Builder中是怎樣實現菜單的?

 答:C++Builder為我們提供了兩種菜單組件:一種是主菜單組件MainMenu;另一種是快顯功能表PopMenu組件。

  主菜單組件的作用是在表單上產生菜單條。菜單組件剛放到表單上時,菜單是不可見的,當雙擊它開啟菜單編輯器並且增加了功能表項目後,菜單條才出現在表單的頂部。設計時的菜單條與運行時的菜單條完全一樣。

  下面我們介紹利用菜單編輯器進行菜單設計的過程。

  首先要開啟菜單編輯器

 78)問:當功能表項目中的子功能表項屬於不同類別時,有必要用分隔條把子功能表項進行分組,菜單組件是怎樣實現這個功能的?

  答:我們在退出和儲存兩個功能表項目中間加入選擇分隔條,在退出功能表項目上點擊滑鼠右鍵,從快顯功能表中選擇Insert,這時,一個空白的功能表項目就插入了,將它的Caption屬性設定為“–”這個減號符就可以了。

  79)問:那麼,我們又怎樣給功能表項目設定熱鍵呢?

  答:每個功能表項目都有一個屬性ShortCut,利用這個屬性就可以給這個功能表項目設定熱鍵了。現在我們給開啟檔案功能表項目添加熱鍵。單擊這個功能表項目,選擇屬性ShortCut,出現一個下拉式功能表,其中包括一系列的熱鍵的組合。選擇Ctrl+O,這個熱鍵中就被賦給了退出功能表項目。

  80)問:快速鍵與熱鍵這兩個概念我已經弄糊塗了,您能給我解釋一下嗎?

  答:好的,快速鍵與熱鍵相同的方面是,它們都是通過鍵盤來訪問。

  一個功能表項目可以同時擁有快速鍵和熱鍵。所謂快速鍵通常只是一個字母,而熱鍵通常是一個按鍵組合。另外它們的啟用方式不一樣,例如一個子功能表項有一個快速鍵O和一個熱鍵Ctrl+O,那麼使用熱鍵就可以直接啟用這個子功能表項,而使用快速鍵你必須首先選中該子功能表項上一層的功能表項目,然後按下快速鍵才可以啟用這個子功能表項。

  81)問:您講解的菜單到現在還只有功能表項目和子功能表兩級,如果我希望子功能表還有自己的子功能表,應該怎麼辦?

  答:這種嵌套的功能表項目實際上就是串聯功能表。這裡,我們給顏色功能表項目添加子功能表項,選擇顏色菜單,單擊滑鼠右鍵,在彈出的捷徑功能表中選擇Create Submenu命令,這時在子功能表項中將出現一個指向右的箭頭,同時還產生了一個串聯功能表。

  當然,你也可以用Ctrl+方向鍵右鍵。

  82)問:很多功能表項目的旁邊有核取記號,請問菜單編輯器是否提供了這個功能呢?

  答:核取記號就是在功能表項目的標題的前面出現的勾號。核取記號經常用於一些狀態設定的功能表項目,當處於該狀態時就會出現核取記號,否則核取記號消失。

  現在,我們給迴繞功能表項目設定核取記號,在對象編輯器中把它的屬性Checked改為True,這樣這個功能表項目就會顯示核取記號。要取消核取記號可以把Checked屬性再次設定為False。

  從組件模板上的Standard選項卡中選擇MainMenu組件,放置到表單上。然後,用滑鼠右鍵單擊菜單組件,然後在快顯功能表中選擇Menu Designer。當然,你也可以雙擊菜單組件開啟菜單編輯器。

  被加亮顯示的小方框就是一個空白功能表項目。

  接著要添加功能表項目

  選中這個功能表項目,這時對象編輯器中將出現這個功能表項目的屬性。

  我們在功能表項目的Caption屬性中輸入“檔案(&File)”,其中“&F”可以產生一個快速鍵,這樣使用者就可以通過鍵盤操作了,並且F下面出現了底線(注意:由於是系統原因,”&”一定要在英文狀態下輸入)。當我們輸入完標題並按下斷行符號鍵時,C++Buildr會自動給這個功能表項目賦一個名字,這裡的名字是N1。如果你不滿意這個名字可以修改Name屬性。

  添加完功能表項目後會自動出現一個空白的子功能表項等待你輸入。

  現在菜單編輯器中的輸入焦點移到了這個空白子功能表項上,同時對象編輯器將對應顯示這個子功能表項的屬性。你可以在Caption屬性中輸入子功能表項的標題“開啟(&Open)”,然後按下斷行符號鍵。菜單編輯器會開啟一個新的子功能表項,並把輸入焦點移動到這個子功能表項上。這樣,就可以給功能表項目增加一系列的子功能表了。

  同樣方法添加退出菜單。

  要開始編輯下一個功能表項目,可以用按一下滑鼠功能表項目“檔案”的右邊的虛線框,它表示一個空白的功能表項目。

  83)問:我有時要設計一組互斥的功能表項目,也就是單選功能表項目,應該怎麼辦呢?

  答:要使一組功能表項目成為單選功能表項目,必須滿足幾個條件。

  首先,這一組菜單必須在同一個下拉式功能表中。

  其次,它們的RadioItem屬性必須都設定成了True。

  最後,它們的GroupIndex屬性必須相同。

  這一組中唯一被選中的功能表項目的前面將會顯示一個圓點標記。

  84)問:我怎樣使功能表項目失效呢?

  答:只要把功能表項目的Enabled屬性設定為False,就可以使功能表項目失效,這時功能表項目是灰色的。在設計時和運行時你可以任意設定功能表項目的Enabled屬性。

  85)問:功能表項目有些什麼常用的事件呢?

  答:功能表項目只有一種事件OnClick,在實際編輯中這個事件是一定要響應的。

  86)問:我們一般在主菜單之外還會提供一個捷徑功能表,就像C++Builder一樣,在表單中單擊右鍵隨時都可以開啟一個快顯功能表。C++Builder是怎樣實現快顯功能表的?

  答:快顯功能表有時候又稱為捷徑功能表。快顯功能表與主菜單的區別是:主菜單是固定的,而快顯功能表是活動的;主菜單有多組功能表項目,而快顯功能表只有一組。快顯功能表的設計方法與主菜單基本相同,也是使用菜單編輯器來完成的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.