我已經在GitHub上發佈了這個作爲an issue on RRUZ's Vcl Style Utils庫。不過,我想我也可以在這裏得到一些幫助。Vcl樣式實用工具 - 擺脫默認窗體圖標
我正在使用VCL樣式創建Windows 10用戶界面,特別是使用「Windows 10 Dark」樣式。我還使用VCL Style Utils可以將按鈕添加到標題欄中的非客戶端區域。我試圖完全忽視表單圖標及其默認功能,以支持後退按鈕,就像大多數新的Windows 10應用程序一樣。
我試圖在窗體的最左上角放置一個按鈕,使用Vcl.Styles.NC
中的TNCControls
組件。但是,當我將一個按鈕放在窗體的圖標上時,該按鈕無法在圖標區域中單擊。儘管我可以重疊圖標,但單擊標題欄的特定區域將始終打開表單的系統菜單,而不是單擊放置在該處的按鈕。
點擊那裏,當我不爲這個菜單要彈出:
如何我目前正在創建這個按鈕:
procedure TfrmTestMain.SetupTitleBar;
var
B: TNCButton;
begin
FNCControls:= TNCControls.Create(Self);
B:= FNCControls.ButtonsList.Add;
B.Style := TNCButton.TNCButtonStyle.nsTranparent;
B.BoundsRect := Rect(0, 0, 45, 32);
B.UseFontAwesome:= True;
B.Caption := '';
B.ImageAlignment:= TImageAlignment.iaCenter;
B.ImageStyle:= TNCButton.TNCImageStyle.isNormal;
B.ImageIndex:= fa_chevron_left;
end;
我到目前爲止已經試過:
用完全空的.ico文件替換表單的圖標。
將窗體樣式更改爲bsSizeToolWin,但標題欄變得太小,而我失去了最小化/最大化按鈕。
將窗體樣式更改爲bsDialog,但獲得與上面#2相同的效果,以及無法調整窗體大小。
確認按鈕樣式是nsPushButton,雖然它覆蓋了窗體圖標,但點擊該區域仍會單擊該圖標,該圖標依次顯示默認系統菜單。
以下everything in this thread,但結論是,Windows迫使你有這個圖標。
從窗體的
BorderIcons
屬性中刪除biSystemMenu
,但是這也刪除了窗體右上角的默認按鈕,迫使我將自己的系統按鈕放在那裏。
如何完全消除表單圖標及其默認功能,以支持我的Windows 10樣式的後退按鈕?
我不知道的款式,但是通常你應該能夠關閉系統菜單中BorderIcons從而擺脫圖標,系統菜單和標題按鈕。 –
我以爲在BorderIcons中關閉'biSystemMenu'可以工作,但由於某種原因,在柏林它也會刪除最小化,最大化和關閉按鈕。不知道什麼時候這被打破。 –
@Ken,這是標準的api行爲,標題按鈕需要ws_sysmenu。 –