2012-05-04 2 views
4

VCL 스타일을 사용하기 위해 Delphi TTaskDialog를 만들 수 있습니까?VCL 스타일을 사용하도록 Delphi TTaskDialog를 만들 수 있습니까?

+5

['TTaskDialog'] (http://docwiki.embarcadero.com/Libraries/en/Vcl.Dialogs.TTaskDialog)는 전적으로 ''Windows Vista up dialog' (http://msdn.microsoft.com)입니다. /en-us/library/windows/desktop/bb787471%28v=vs.85%29.aspx), 그리고 이것이 어렵다면 (가능한 경우). 내 제안은 자신의 것입니다 (또한, 당신은 혜택을 얻을 것이다, 자신의 작업 대화 상자는 아래 Windows XP에서도 작동합니다). – TLama

+0

['Arnaud'] (http://stackoverflow.com/users/458259/arnaud-bouchez)가 ['작업 대화 시뮬레이션]을 만들었습니다. (http://blog.synopse.info/post/2011/03/05/Open-Source-SynTaskDialog-unit-for-XP, Vista, Seven)을 설치하십시오. – TLama

+1

Tlama/Arnaud - StackOverflow 커뮤니티의 지식과 유용성에 다시 한 번 놀라게되었습니다! – Mmarquee

답변

4

AFAIK, 그리고 그의 의견에서 TLama가 말했듯이이 TTaskDialog은 Windows API를 직접 매핑하기 때문에 VCL 스타일을 직접 수행 할 수 없습니다.

그러나 described in this article about using VCL Styles within a TWebBrowser과 유사한 해킹을 사용하면이 작업을 수행 할 수 있습니다.

이것은 약간의 작업이거나 가능하지 않을 수도 있습니다. Windows에서 작성한 모든 구성 요소를 해킹해야하는데 쉽지 않습니다. Task Dialog API는 TWebBrowser처럼 오버라이드 할 준비가 된 많은 콜백이있는 완전하고 상세한 COM 인터페이스를 제공하지 않습니다.

Open-Source Task Dialog emulation code을 처음 사용할 경우 순수 VCL 구성 요소로 에뮬레이션 레이어를 사용할 수 있습니다. 이 경우 스타일을 사용하여 작업하기가 쉽습니다. 유닛을 향상 시키려면 피드백과 패치를 보내주십시오! 다른 사용자는 좋은 기능을 위해 이익을 얻고 싶습니다. 이것은 오픈 소스에서 굉장한 것입니다. 뭔가를 시작하고 게시 한 다음 contributions are integrated을 입력하면 결과가 더 좋아집니다. :)

+0

+ 1ed, 나는 크레딧을 훔치고 싶지 않습니다 :-) 어쨌든 나는 포지셔닝에 이상한 문제를 발견했습니다. 'Form.Canvas.TextWidth'를 설정하면 (자), 위치가 높은 음의 값으로 변경됩니다. 또, 폼의 사이즈가 변경 될 때마다, 위치의 값도 감소 해, 폼이 결코 보이지 않게됩니다. 이것이 IMHO 양식에 영향을주지 않아야하므로 왜 이런 일이 발생하는지 알 수 없습니다. – TLama

+0

@TLama "Setting the Form.Canvas.TextWidth"는 무엇을 의미합니까? –

+0

'SynTaskDialog.pas', 653 행입니다. 삭제 된 게시물에서와 같이'Execute'를 호출했고 그 행에서'Form.Left'와'Form.Top'이 음수 값으로 변경되었습니다 (어쨌든 매우 이상합니다). Btw. 나는'poScreenCenter' 포지션을 가진 호출자 폼을 설정했습니다 (어떻게 든 달라집니다, 이유는 없습니다). – TLama

6

VCL Styles Utils 라이브러리에 TTaskDialog을 추가했습니다.

enter image description here

enter image description here

당신이 당신의 프로젝트에이 장치를 추가해야이 기능을 활성화합니다.

  • Vcl.Styles.Utils.Forms
  • Vcl.Styles.Utils.SysStyleHook
  • Vcl.Styles.Utils.SysControls
  • Vcl.Styles.Hooks

더 많은 정보가 있습니다 이 번호는 blog post에 있습니다.

관련 문제