2009-09-16 12 views
8

Mamy kilka starszych aplikacji, które zostały napisane w Delphi 7. Od lat mieliśmy kilka próśb do obsługi niestandardowych ustawień pulpitu dpi w tych aplikacjach, ale udało nam się uniknąć pocisku aż do poznania. Cóż, już nie możemy.W jaki sposób obsługiwane są niestandardowe ustawienia pulpitu DPI w aplikacjach Delphi 7?

Gdy użytkownicy ustawiają swoje komputery stacjonarne na 120dpi, niektóre elementy sterujące "odpadają" aplikacji lub rozciągają się poza widoczną, są w postaci, a konkretnie tych, które są zakotwiczone na prawej krawędzi rodzica.

Co mogę zrobić, aby temu zapobiec, BEZ operacji na otwartym sercu.

+0

VCL po prostu nie może tego zrobić bez "operacji na otwartym sercu". Najlepsze rozwiązanie, jakie widziałem do tej pory, jest używane w Inno Setup, który ma formularze z 'Scaled' ustawione na' False', ale stosuje niestandardowe funkcje skalowania formularzy w czasie wykonywania. To sprawia, że ​​utworzone programy konfiguracyjne IS wyglądają całkiem dobrze przy wyższych ustawieniach DPI. – mghie

Odpowiedz

1

Jak zapewne wiesz, jest to well known issue with Delphi forms and interactions with system font sizes.

Domyślnym zachowaniem formularza Delphi jest próba skalowania w celu poszanowania środowiska graficznego użytkownika (środowiska wykonawczego). Może to mieć niezamierzone i niepożądane skutki uboczne, jak już stwierdzono.

Ale właściwość Scaled (domyślnie PRAWDA) może być ustawiona na FALSE, aby temu zapobiec, ale zalecam przeczytanie tego pierwszego artykułu, a także rozważenie the information in this article w celu ustalenia, czy jest to właściwe rozwiązanie w twoim przypadku.

Jeśli masz szczęście, po prostu ustawienie skalowane na FAŁSZ na wszystkich twoich formularzach może ci w tym pomóc, jeśli nie na całej linii (co może być uciążliwe, ale nie jest to dokładnie operacja na otwartym sercu).

+0

Ach, pokonałeś mnie kilka sekund, a twoja odpowiedź jest lepsza/bardziej kompletna. Skasuję podobną odpowiedź. :-) – robsoft

+3

-1 za wskazówkę, aby nawet rozważyć po prostu ustawienie 'Scaled' na' False'. Można to zrobić, ale tylko przy pełnym zmienianiu i zmianie położenia wszystkich elementów sterujących. Najlepiej po ustawieniu odpowiedniej czcionki systemowej (określonej w czasie wykonywania) dla każdej postaci. Żadne skalowanie ani zmiana czasu działania nie stanowią okrucieństwa wobec osób z zaburzeniami widzenia i/lub ekranów o wysokiej rozdzielczości. – mghie

Powiązane problemy