Podczas projektowania formy w Delfy, często przydatne jest napisanie kodu, aby aplikacja (formularze i wszystkie obiekty) wyglądała zasadniczo tak samo, niezależnie od rozdzielczości ekranu.
Pierwszą rzeczą, o której chcesz pamiętać na wczesnym etapie projektowania formularza, jest to, czy zezwalasz na skalowanie formularza, czy nie. Zaletą braku skalowania jest to, że nic się nie zmienia w czasie wykonywania. Wadą braku skalowania jest to nic się nie zmienia w czasie wykonywania (formularz może być o wiele za mały lub za duży, aby odczytać go w niektórych systemach, jeśli nie jest skalowany).
Jeśli nie zamierzasz skalować formularza, ustaw Łuskowaty do False. W przeciwnym razie ustaw właściwość na Prawda. Również ustaw Auto Scroll na False: odwrotnie oznaczałoby to nie zmianę rozmiaru ramki formularza w czasie wykonywania, co nie wygląda dobrze, gdy zawartość formularza robić Zmień rozmiar.
Ważne uwagi
Ustaw czcionkę formularza na skalowalną czcionkę TrueType, taką jak Arial. Tylko Arial da ci czcionkę w pikselu żądanej wysokości, jeśli czcionka użyta w aplikacji nie jest zainstalowany na komputerze docelowym, a następnie Windows wybierze alternatywną czcionkę z tej samej rodziny czcionek do użycia zamiast.
Ustaw formularz Pozycja właściwość do czegoś innego niż poDesigned, która pozostawia formę w miejscu, w którym została pozostawiona w czasie projektowania. Zwykle kończy się to daleko w lewo na ekranie 1280 x 1024 - i całkowicie poza ekranem 640 x 480.
Nie nakładaj elementów sterujących na formularzu - pozostaw co najmniej 4 piksele między elementami sterującymi, aby zmiana o jeden piksel w lokalizacjach obramowania (z powodu skalowania) nie była wyświetlana jako nakładające się elementy sterujące.
Dla etykiet jednowierszowych alLeft lub w porządku wyrównany, ustawiony Rozmiar auta do prawdy. W przeciwnym razie ustaw Rozmiar auta do False.
Upewnij się, że w komponencie etykiety jest wystarczająca ilość wolnego miejsca, aby umożliwić zmianę szerokości czcionki - puste miejsce, które stanowi 25% długości bieżącego strunowy długość wyświetlacza jest trochę za duża, ale bezpieczna. Będziesz potrzebować co najmniej 30% miejsca na rozwinięcie etykiet ciągów, jeśli planujesz przetłumaczyć swoją aplikację na inne języki. Gdyby Rozmiar auta jest False, upewnij się, że właściwie ustawiłeś szerokość etykiety odpowiednio. Gdyby Rozmiar auta jest Prawdą, upewnij się, że jest wystarczająco dużo miejsca, aby etykieta mogła samodzielnie rosnąć.
W wielowierszowych, zawijanych słowami etykietach pozostaw co najmniej jedną linię pustego miejsca na dole. Będziesz potrzebował tego, aby wychwycić przepełnienie, gdy tekst zawija się inaczej, gdy szerokość czcionki zmienia się wraz ze skalowaniem. Nie zakładaj, że ponieważ używasz dużych czcionek, nie musisz dopuszczać przepełnienia tekstu - duże czcionki innej osoby mogą być większe niż twoje!
Uważaj na otwarcie projektu w IDE przy różnych rozdzielczościach. Formularz PixelsPerInch właściwość zostanie zmodyfikowana, gdy tylko formularz zostanie otwarty, i zostanie zapisana w DFM, jeśli zapiszesz projekt. Najlepiej jest przetestować aplikację, uruchamiając ją samodzielnie i edytować formularz tylko w jednej rozdzielczości. Edycja w różnych rozdzielczościach i rozmiarach czcionek zachęca do dryfowania komponentów i problemów z rozmiarem. Upewnij się, że ustawiłeś PixelsPerInch dla wszystkich formularzy do 120. Domyślnie jest to 96, co powoduje problemy ze skalowaniem przy niższej rozdzielczości.
Mówiąc o przesunięciu komponentu, nie należy przeskalowywać formularza wiele razy, w czasie projektowania lub środowisko uruchomieniowe. Każde przeskalowanie wprowadza błędy zaokrąglania, które kumulują się bardzo szybko, ponieważ współrzędne są ściśle integralne. Gdy kwoty ułamkowe są obcinane z początków i rozmiarów kontrolki przy każdym kolejnym przeskalowaniu, kontrolki będą się pełzać na północny zachód i będą się zmniejszać. Jeśli chcesz zezwolić użytkownikom na przeskalowanie formularza dowolną liczbę razy, zacznij od świeżo załadowanego / utworzonego formularza przed każdym skalowaniem, aby nie narastały błędy skalowania.
Zasadniczo projektowanie formularzy przy określonej rozdzielczości nie jest konieczne, ale bardzo ważne jest, abyś przejrzał ich wygląd na 640x480 z dużymi i małymi czcionkami oraz w wysokiej rozdzielczości z małymi i dużymi czcionkami, przed wydaniem twoja aplikacja. Powinno to stanowić część regularnej listy kontrolnej testów zgodności systemu.
Zwróć szczególną uwagę na wszystkie elementy, które są zasadniczo jednowierszowe TMemos—rzeczy jak TDBLookupCombo. Kontrolka edycji wielu wierszy w systemie Windows zawsze pokazuje tylko całe linie tekstu - jeśli kontrolka jest zbyt krótka dla jej czcionki, a TMemo nic nie pokaże (a TEdit pokaże przycięty tekst). W przypadku takich komponentów lepiej jest ustawić je o kilka pikseli za duże niż o jeden piksel za małe i nie pokazywać żadnego tekstu.
Pamiętaj, że całe skalowanie jest proporcjonalne do różnicy wysokości czcionki między czasem wykonywania a czasem projektowania, nie rozdzielczość w pikselach lub rozmiar ekranu. Pamiętaj również, że początki twoich kontrolek zostaną zmienione, kiedy formularz zostanie przeskalowany - nie można bardzo dobrze powiększyć komponentów bez przesunięcia ich nieco.
Kotwice, wyrównanie i ograniczenia: VCL innej firmy
Kiedy już wiesz, jakie kwestie należy wziąć pod uwagę przy skalowaniu formularzy Delphi na różnych rozdzielczościach ekranu, jesteś gotowy na niektóre kodowanie.
Podczas pracy z Delphi w wersji 4 lub wyższej zaprojektowano kilka właściwości, które pomagają nam zachować wygląd i układ formantów w formularzu.
Posługiwać się Wyrównać aby wyrównać formant do górnej, dolnej lewej lub prawej strony formularza lub panelu i pozostawić go tam, nawet jeśli zmieni się rozmiar formularza, panelu lub komponentu zawierającego formant. Po zmianie rozmiaru elementu nadrzędnego zmienia się również wyrównany element sterujący, tak aby nadal obejmował górną, dolną, lewą lub prawą krawędź elementu nadrzędnego.
Posługiwać się Ograniczenia określić minimalną i maksymalną szerokość i wysokość formantu. Gdy ograniczenia zawierają wartości maksymalne lub minimalne, nie można zmienić rozmiaru formantu, aby złamać te ograniczenia.
Posługiwać się Kotwice w celu zapewnienia, że formant zachowuje swoją bieżącą pozycję względem krawędzi swojego elementu nadrzędnego, nawet jeśli rozmiar elementu nadrzędnego zostanie zmieniony. Po zmianie rozmiaru elementu nadrzędnego element sterujący utrzymuje pozycję względem krawędzi, do których jest zakotwiczony. Jeśli formant jest zakotwiczony do przeciwległych krawędzi jego elementu nadrzędnego, element sterujący rozciąga się po zmianie rozmiaru elementu nadrzędnego.
procedura ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
zaczynać
F.Scaled: = True;
F.AutoScroll: = False;
F.Position: = poScreenCenter;
F.Font. Nazwa: = „Arial”;
if (Screen. Szerokość <> ScreenWidth), a następnie rozpocznij
F.Wysokość: =
LongInt (F.Height) * LongInt (ekran. Wysokość)
div ScreenHeight;
F.Width: =
LongInt (F.Width) * LongInt (ekran. Szerokość)
div ScreenWidth;
F.ScaleBy (ekran. Szerokość, szerokość ekranu);
koniec;
koniec;