2009-09-16 2 views
8

델파이 7로 작성된 몇 가지 레거시 응용 프로그램이 있습니다. 우리는이 응용 프로그램에서 사용자 지정 바탕 화면 dpi 설정을 지원하기 위해 몇 년 동안 요청했지만 우리는 알 수있을 때까지 총알을 피할 수있었습니다. 우리는 더 이상 할 수 없습니다.Delphi 7 응용 프로그램에서 사용자 지정 Desktop DPI 설정을 어떻게 지원합니까?

사용자가 120dpi라고 말하도록 데스크톱을 설정하면 컨트롤 중 일부가 응용 프로그램을 "떨어지게"하거나 폼의 보이는 범위를 벗어나 확장합니다. 특히 부모의 오른쪽 가장자리에 고정되어 있습니다.

열린 심장 수술없이이 문제를 예방하려면 어떻게해야합니까?

+0

VCL은 "열린 심장 수술"없이는 그렇게 할 수 없습니다. 필자가 지금까지 보아온 가장 좋은 해결책은 Inno Setup에서 사용되었습니다. Inno Setup은'Scaled'가'False'로 설정된 양식을 가지고 있지만 런타임에 양식에 대한 사용자 정의 크기 조정 기능을 사용합니다. 이렇게하면 IS 작성된 설치 프로그램이 높은 DPI 설정에서 꽤 잘 보입니다. – mghie

답변

1

아시다시피, 이것은 well known issue with Delphi forms and interactions with system font sizes입니다.

델파이 폼의 기본 동작은 (런타임) 사용자의 데스크톱 환경을 고려하여 확장하려고하는 것입니다. 그러나 의도하지 않았거나 바람직하지 않은 부작용이있을 수 있습니다.

그러나 Scaled 속성 (기본값은 TRUE)은 FALSE로 설정하면이 문제를 방지 할 수 있지만 첫 번째 기사를 읽어 보시고 the information in this article을 고려하여이 것이 올바른 해결책인지 확인하십시오.

운이 좋으면 모든 양식에서 Scaled를 FALSE로 설정하면 지루할 수는 있지만 정확히 열린 심장 수술은 아닐지라도 좋은 방법이 될 수 있습니다.

+0

아, 몇 초 동안 나를 때려 눕히면 당신의 대답은 더 좋고/더 완벽 해집니다. 나는 비슷한 대답을 지울 것이다. :-) – robsoft

+3

-1은 'Scaled'를'False'로 단순히 설정하는 것을 고려합니다. 하나는 그렇게 할 수 있지만 모든 컨트롤의 전체 런타임 크기 조정 및 위치 변경으로 만 가능합니다. 가급적이면 각 양식에 대해 적절한 시스템 글꼴 (런타임에 결정됨)을 설정해야합니다. 스케일링이나 런타임 크기 조정은 시각 장애가 있거나 DPI 화면이 높은 사람들을위한 잔인 함입니다. – mghie