2016-09-03 10 views
3

나는 이것을 GitHub에 an issue on RRUZ's Vcl Style Utils 라이브러리로 게시했습니다. 그러나 나는 여기에서도 도움을 얻을 수있을 것이라고 생각했다.Vcl 스타일 Utils - 기본 양식 아이콘 제거

"Windows 10 Dark"스타일을 사용하여 Windows 10 사용자 인터페이스를 만들 때 VCL 스타일을 사용하고 있습니다. 또한 VCL 스타일 유틸리티를 사용하여 제목 표시 줄의 비 클라이언트 영역에 단추를 추가 할 수 있습니다. 나는 완전히 새로운 Windows 10 응용 프로그램처럼 뒤로 버튼을 사용하여 양식 아이콘과 기본 기능을 완전히 무시하려고합니다.

Vcl.Styles.NCTNCControls 구성 요소를 사용하여 양식의 왼쪽 상단 모서리에 버튼을 배치하려고합니다. 그러나 폼의 아이콘 위에 단추를 배치하면 아이콘 영역에서 단추를 클릭 할 수 없습니다. 아이콘을 겹칠 수는 있지만 제목 표시 줄의 해당 특정 영역을 클릭하면 항상 거기에 배치 한 단추를 클릭하는 대신 양식의 시스템 메뉴가 열립니다. 나는 현재이 버튼을 만드는거야 어떻게

Form System Menu

을 :이 클릭했을 때 팝업이 메뉴 원치 않는

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; 

지금까지 시도했다 :

  1. 완전히 비어있는 .ico 파일로 양식의 아이콘을 대체했습니다. .

  2. 양식 스타일을 bsSizeToolWin으로 변경했지만 제목 표시 줄이 너무 작아서 최소화/최대화 단추가 손실됩니다.

  3. 양식 스타일을 bsDialog로 변경했지만 위의 # 2와 같은 효과를 얻을뿐만 아니라 양식의 크기를 조정할 수 없습니다.

  4. 버튼 스타일이 nsPushButton인지 확인하고 양식 아이콘을 덮어도이 영역을 클릭해도 아이콘이 계속 클릭되어 기본 시스템 메뉴가 표시됩니다.

  5. 다음은 everything in this thread이지만, 결론은 Windows에서이 아이콘이 있어야한다는 것입니다.

  6. 양식의 BorderIcons 속성에서 biSystemMenu을 제거했지만 양식의 오른쪽 상단에있는 기본 단추를 제거하여 강제로 내 시스템 단추를 배치합니다.

어떻게 양식 아이콘과 기본 기능을 완전히 제거하여 Windows 10 스타일의 뒤로 가기 단추를 사용합니까?

+2

시도하지만, 일반적으로 당신은 BorderIcons에 시스템 메뉴를 해제하고, 따라서 아이콘 및 시스템 메뉴 및 자막 버튼을 없애 할 수 있어야한다. –

+0

BorderIcons에서'biSystemMenu'를 끄는 것이 효과가있을 것이라고 생각했지만 베를린의 어떤 이유로 든 최소화, 최대화 및 닫기 버튼도 제거합니다. 이것이 언제 망가 졌는지 확실하지 않습니다. –

+0

@Ken, 표준 API 동작입니다. 캡션 버튼에는 ws_sysmenu가 필요합니다. –

답변

5

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;