Vcl Style Utils - избавиться от значка формы по умолчанию
Я уже разместил это как проблему в библиотеке RRUZ Vcl Style Utils на GitHub. Тем не менее, я думал, что смогу получить помощь и здесь.
Я использую стили VCL для создания пользовательского интерфейса Windows 10, в частности, используя стиль "Windows 10 Dark". Я также использую VCL Style Utils, чтобы иметь возможность добавлять кнопки в не-клиентскую область в строке заголовка. Я пытаюсь полностью игнорировать значок формы и его функциональность по умолчанию в пользу кнопки "Назад", как это делают большинство новых приложений Windows 10.
Я пытаюсь поместить кнопку в дальний верхний левый угол формы, используя TNCControls
компонент в Vcl.Styles.NC
, Однако, когда я размещаю кнопку над значком формы, кнопка не может быть нажата в области значка. Несмотря на то, что я могу перекрывать значок, нажатие в этой конкретной области строки заголовка всегда открывает системное меню формы, а не нажатие кнопки, которую я там разместил.
Я не хочу, чтобы это меню появлялось при нажатии на него:
Как я сейчас создаю эту кнопку:
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, и хотя он закрывает значок формы, при щелчке по области все еще щелкает значок, который, в свою очередь, показывает системное меню по умолчанию.
Следите за всем в этой теме, но вывод таков: Windows заставляет вас иметь этот значок.
Удалены
biSystemMenu
из формыBorderIcons
свойство, но это также удаляет кнопки по умолчанию в правом верхнем углу формы, заставляя меня размещать свои собственные системные кнопки там.
Как полностью исключить значок формы и функции по умолчанию в пользу моей кнопки "Назад" в стиле Windows 10?
1 ответ
TNCControls
компонент включает в себя ShowSystemMenu
имущество. Если вы установите значение false, то системное меню не будет отображаться.
Попробуй это
uses
Vcl.Styles.Utils.Graphics;
procedure TfrmTestMain.FormCreate(Sender: TObject);
begin
SetupTitleBar;
end;
procedure TfrmTestMain.NCClick(Sender: TObject);
begin
ShowMessage('Hello');
end;
procedure TfrmTestMain.SetupTitleBar;
var
B: TNCButton;
begin
FNCControls:= TNCControls.Create(Self);
FNCControls.ShowSystemMenu := False; //Disable the system menu.
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;
B.OnClick := NCClick;
end;