2015-11-20 63 views
0

使用Borland/CodeGear/Ebarcadero C++ Builder 2009.是否可以顯示快捷方式(或其他文本),右對齊TPopupMenu的第二列?兩列TPopupMenu列表快捷鍵右對齊

例如:

[image] Open File  ctrl-O 
[image] Close File  ctrl-W 
[image] BlahBlah   ctrl-B 

如果是這樣,怎麼樣? 我檢查了項目上的break屬性,但結果並不完全符合我的要求,因爲項目可以單獨選擇,而不是完整的行。也沒有很好地畫出來。

您的反饋讚賞。

回答

1

菜單項可以有一個圖像(請參閱TMenuItem.ImageIndex屬性),並且可以分配一個快捷方式(請參閱TMenuItem.ShortCut屬性)。 VCL將自動爲您繪製這些元素,完全如您所示。

menu1

默認情況下,他們都有點壓扁在一起。您可以使用TMenuItem.OnMeasureItem事件延長Width

menu2

如果你還是不喜歡畫的樣子默認,或者你想不同的文本比ShortCut出現在右側,你會必須自己主動繪製菜單項(請參閱TMenuItem.OnDrawItemTMenuItem.OnAdvancedDrawItem事件),然後可以使菜單項出現,但是您需要。

+0

太棒了!我不知道'TMenuItem.ShortCut'屬性。我處理FormKeyDown事件中的所有快捷方式(表單的KeyPreview爲true)。快捷鍵很長,我從來沒有打算把它們顯示爲文本,現在我想這樣做。如果我理解正確,VCL現在也想要執行MenuItem分配的快捷鍵了?這會導致衝突(未經測試)?是否有一個設置來確保只執行FormKeyDown,但快捷方式文本仍然顯示? – Peter

+0

是的,如果您指定了「ShortCut」,則無需手動處理鍵擊,VCL將爲您處理快捷分派。 –

+0

謝謝。有沒有辦法阻止VCL這樣做,因爲我只想繼續使用Form的KeyDown事件。其實,我剛剛發現:http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/delphivclwin32/AppEvnts_TApplicationEvents_OnShortCut.html(將'Handled'設置爲'true'應該這樣做)。星期一進行測試。 – Peter