THighDPIHelper
Ostatnia aktualizacja:
Komponent THighDPIHelper mający na celu wspomóc w szybkim dostosowaniu aplikacji tworzonych w Delphi do ekranów wysokiej rozdzielczości. Więcej na ten temat możesz przeczytać w poradzie Aplikacje DPI-Aware w Delphi.
Użycie komponentu sprowadza się do położenia go na każdej jednej formatce programu, w którym chcemy zastosować dostosowanie. Oczywiście w ustawieniach projektu trzeba zaznaczyć także opcję włączenia obsługi High-DPI. W ramach podniesienia zgodności aplikacji z DPIAware komponent wykonuje następujące operacje:
- Skaluje wszystkie obrazki przycisków
TBitBtniTSpeedButton - Skaluje wszystkie obrazki na listach
TImageList - Zmienia własność
ItemHeightkomponentów bazujących naTCustomComboBox
Komponenty projektowane są dla Delphi 10 Seattle, lecz powinny działać także z wersjami starszymi oraz nowszymi. Aby zainstalować komponent w Delphi należy:
- Wypakować zawartość archiwum do katalogu, w którym chcemy umieścić komponenty.
- Otworzyć plik
Packages\HIghDPIHelper_D300.groupprojw Delphi. - Ustawić platformę na 64-bit Windows dla paczki
HighDPIHelperRi skompilować. - Ustawić platformę na 32-bit Windows dla paczki
HighDPIHelperRi skompilować. - Użyć opcji instalacji dla paczki
HighDPIHelperD. - Komponent zostanie zainstalowany na karcie Windows 10.
Opis komponentu:
- Właściwości:
Scale: Real- zwraca wartość rzeczywistą skalowania, jakie należy zastosować dla aplikacji. Jeśli aplikacja projektowana była dla 96 DPI, a ustawienia systemu wskazują 120 DPI (125%), to zwróconą wartością będzie 1,25.ExcludeComponents: TStrings- lista nazw komponentów, które mają być wykluczone z automatycznego procesu dostosowania na starcie. Jeśli przykładowo używamy własnych list obrazków dedykowanych różnym rozdzielczością - listy te można wykluczyć.
- Metody:
ScaleImageList(imgList: TImageList)- skaluje przekazaną listę obrazków.ScaleBitmap(button: TBitmap)- skaluje bitmapę.ScaleCombos(cb: TCustomComboBox)- przelicza własność ItemHeight dla przekazanego komponentu dziedziczącego poTCustomComboBox.ScaleInt(const aValue: Integer): Integer;- zwraca wartość całkowitą po przeskalowaniu; przydatne podczas obliczeń podczas samodzielnego rysowania elementów lub rozmieszczania dynamicznie tworzonych komponentów.
Rezultaty
Powyżej aplikacja uruchomiona na ekranie ze skalowaniem 150%, z włączoną obsługą HighDPI lecz bez dokonania jakichkolwiek zmian w zakresie jej dostosowania oraz po użyciu komponentu THighDPIHelper.
- Ikony paska narzędzi zostały powiększone.
- Ikony przycisków zostały powiekszone.
- Ikony listy zostały powiększone, co wyeliminowało błędne wyświetlanie grafiki.
Komentarze (…)