2014-09-16 2 views
1

내 델파이 애플리케이션은 편집기에서 멋지게 보이지만 컴파일되었을 때 버튼과 물건에 슈퍼 오래된 렌더링을 사용하는 것처럼 보였습니다. 필자는 컴파일 된 응용 프로그램을 편집기와 비슷하게 사용한다고 생각했습니다. 이 일이 일어나기까지 무엇을 망칠 수 있습니까?VCL 구성 요소가 예쁜 Windows 스타일을 렌더링하지 않습니다.

한 가지 의심 : 한참 전에 나는 실제 프로그램 파일 디렉토리를 찾는 데 필요한 다른 앱에 대한 목록을 망쳐 놓고 있었다. 델파이 프로젝트를 너무 어렵게 만들었습니까? 이 프로젝트는 런타임 테마를 사용하도록 설정됩니다.

상단은 하단은 The top is in the editor, the bottom is the compiled version

+0

매니 페스트로 놀아 본 적이 있다면 추가 한 매니페스트를 모두 제거하십시오. 기본적으로 모든 Delphi 앱은 런타임 테마를 사용하기 때문에 이것이 중요한 문제인 것 같습니다. 비록 활성화 되어도, 매니페스트는 그것을 모두 오버라이드합니다. –

+0

그러나 다른 프로젝트에 영향을 줄 수있는 글로벌 매니페스트를 넣을 수있는 곳이 있습니까? 이 프로젝트는 디렉토리에 매니페스트가 없습니다. 프로젝트를위한 프로젝트를 만들고 프로젝트에 사용자 지정 매니페스트를 사용한다고 말한 것만 기억합니다. 내가 그 (것)들과 할 수 있던 다른 어리석은 다른 것? –

+0

잠깐, 그러면 모든 프로젝트에서이 문제가 발생합니까? –

답변

2

프로그램이 테마없이 렌더링되는 컴파일 된 버전이며, 에디터입니다. 가능한 원인 :

  1. 실행 파일에 매니페스트가 없습니다.
  2. 실행 파일에 매니페스트가 있지만 v6 comctl32가 지정되어 있지 않습니다.
  3. 매니페스트가 v6 comctl32를 지정했지만 프로세스가 외부 호환 모드를 사용 중입니다.
  4. 프로그램에서 코드의 비주얼 스타일을 사용하지 않도록 설정합니다. 예를 들어 SetThemeAppProperties을 호출하면됩니다.
  5. 프로그램은 활성화 컨텍스트를 사용하여 실행 파일에 링크 된 것과 다른 매니페스트를 활성화합니다.

이러한 가능성은 점차 더 많이 가져옵니다. 아마도 네가 어떻게 든 매니 페스트를 쓸어 버렸을거야. 리소스 편집기로 쉽게 확인할 수 있습니다.

+0

우승자는 무엇이든 명백하지 않습니다. 이유가 뭐야? 런타임 테마를 사용하도록 설정되었지만 사용자 지정 매니페스트 사용으로 설정하고 디렉토리에서 사용할 기본 매니페스트를 복사하더라도 매니페스트없이 컴파일됩니다. –

+0

발견. 내 프로젝트 파일에서'{$ R * .res}'는'{R * .res}'로 바뀌었고 어떻게 될지 모르겠습니다. 감사. –