Autor Téma: Delphi 12.2 a HDPI monitor  (Přečteno 685 krát)

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1596
  • Karma: 52
    • Verze Delphi: 11.3
Delphi 12.2 a HDPI monitor
« kdy: 11-02-2025, 18:47:47 »
Hezký večer, tak jsem si pořídil nový monitor... HDPI, zvětšení nastaveno na 150 %. Všechny aplikace se chovají způsobně, kromě 11 let starého poštovního klienta a - kromě nejnovějších Delphi... :-( Provozujete někdo Delphi 12.2 na HDPI monitoru jinak než v rozmazaném "DPI Unaware" režimu?

Offline chaloup

  • Plnoletý
  • ***
  • Příspěvků: 139
  • Karma: 11
    • Verze Delphi: Delphi 12.2
Re:Delphi 12.2 a HDPI monitor
« Odpověď #1 kdy: 11-02-2025, 19:38:00 »
Já teda hdpi monitor nemám, ale tohle máš nastavený jak?
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/High_DPI

tady tvrdí, že to funguje dobře  ;):
https://blogs.embarcadero.com/new-in-rad-studio-11-high-dpi-ide-and-form-designing/

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1596
  • Karma: 52
    • Verze Delphi: 11.3
Re:Delphi 12.2 a HDPI monitor
« Odpověď #2 kdy: 11-02-2025, 21:13:34 »
Já teda hdpi monitor nemám, ale tohle máš nastavený jak?
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/High_DPI

tady tvrdí, že to funguje dobře  ;):
https://blogs.embarcadero.com/new-in-rad-studio-11-high-dpi-ide-and-form-designing/

Taky jsem si nejdřív myslel, že to funguje dobře - možná to funguje pro nějaké základní použití, ale u mne moc ne.
Když nechám 96 dpi, jsou to blechy, takže nepoužitelné. Takže musím dát Automatic (screen DPI).
Co to provede s formulářem, který dědí z jiného formuláře, přikládám v příloze.

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1596
  • Karma: 52
    • Verze Delphi: 11.3
Re:Delphi 12.2 a HDPI monitor
« Odpověď #3 kdy: 12-02-2025, 11:10:56 »
Excellent
Rated 1 time
Tak jsem možná našel postup, jak aplikaci, která byla odjakživa tvořená v 96 dpi, převést na 150 %, aniž by se pokazily formuláře, které dědí z jiných formulářů. Na malinkém testovacím projektu mi funguje následující postup:

1. IDE (spouštím to "normální", DPI aware) nastavit na "Low DPI (96 PPI)".

2. Otevřít projekt a v něm otevřít všechny formuláře, které dědí z jiného formuláře. Ujistit se, že zobrazený je vždy kód, ne formulář. (V téhle fázi IDE funguje taky nějak divně, třeba čtverečky u checkboxů ignorují fakt, že mají být mrňavé, stejně tak pár dalších komponent, ale zdá se, že to nakonec ničemu nevadí.)

3. IDE přepnout na "Automatic (Screen PPI)".

4. V editoru postupně procházet formuláře, musí se začít od (nejvzdálenějších) potomků. Přepnout z Code na Design - vše se přepočítá na 150 %. Formulář uložit (a zavřít). Formuláře-předci se tudíž dělají až nakonec.

Tak jen doufám, že co se osvědčilo při testování, bude fungovat i na celý projekt.


Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3559
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 12.2 a HDPI monitor
« Odpověď #4 kdy: 16-02-2025, 17:15:32 »
Já to moc nechápu. Podle mne jsi to pochopil spatne. Ano Low DPI = 96% je designer, tj. pokud není scale tak je to 1:1, tj. 100%, proto ty blechy / designujes v puvodni velikost. To ale neznamena, ze za behu to nenaskaluje na 150% kdyz bude treba.
IMHO pletes meritko design a za behu. Ale vim, ze jsou nejake problemy s HiDPI a frames vytvrenych dynamicky, ty budou reseny asi v D12.3
Embarcadero MVP - Czech republic

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1596
  • Karma: 52
    • Verze Delphi: 11.3
Re:Delphi 12.2 a HDPI monitor
« Odpověď #5 kdy: 16-02-2025, 17:26:00 »
Já to moc nechápu. Podle mne jsi to pochopil spatne. Ano Low DPI = 96% je designer, tj. pokud není scale tak je to 1:1, tj. 100%, proto ty blechy / designujes v puvodni velikost. To ale neznamena, ze za behu to nenaskaluje na 150% kdyz bude treba.
IMHO pletes meritko design a za behu. Ale vim, ze jsou nejake problemy s HiDPI a frames vytvrenych dynamicky, ty budou reseny asi v D12.3

Tak v principu jsou následující možnosti:

- použit Delphi DPI Unaware - tam problémy nejsou, designer běží s 96 DPI, ale všechno je rozmazané. Koukat celý den do rozmazaného textu a formulářů fakt nechci.

- nebo použít Delphi DPI aware a designer nastavit na Low DPI (96 PPI). Tam asi nedochází k faktickým problémům, ale úpravy formuláře jsou pak za trest, protože je to, nepřekvapivě, titěrné.

- nebo použít Delphi DPI aware a designer nastavit na Automatic (Screen PPI), což nejspíš funguje správně, když se nepoužívá dědění formulářů. Pokud ho ale používám, tak je to zmršené v IDE i v runtime (kromě postupu, co jsem napsal minule, a kterým jsem schopen všechny formuláře převést na 150 %, tj. 144 DPI, a pak se pokud možno dalších 10 let vyhnu koupi jiného monitoru).

Frame v režimu Automatic (Screen PPI) blbnou i v IDE (myslím, že to bylo v případě, že jsem měl otevřený pouze .dpr a otevřel jsem soubor s Frame; když už jsem měl otevřený nějaký formulář, tak se i Frame otevřel správně, ale mohla to být i náhoda, dál jsem to nezkoumal).

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3559
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 12.2 a HDPI monitor
« Odpověď #6 kdy: 16-02-2025, 20:35:39 »
Já to moc nechápu. Podle mne jsi to pochopil spatne. Ano Low DPI = 96% je designer, tj. pokud není scale tak je to 1:1, tj. 100%, proto ty blechy / designujes v puvodni velikost. To ale neznamena, ze za behu to nenaskaluje na 150% kdyz bude treba.
IMHO pletes meritko design a za behu. Ale vim, ze jsou nejake problemy s HiDPI a frames vytvrenych dynamicky, ty budou reseny asi v D12.3

Tak v principu jsou následující možnosti:

- použit Delphi DPI Unaware - tam problémy nejsou, designer běží s 96 DPI, ale všechno je rozmazané. Koukat celý den do rozmazaného textu a formulářů fakt nechci.

- nebo použít Delphi DPI aware a designer nastavit na Low DPI (96 PPI). Tam asi nedochází k faktickým problémům, ale úpravy formuláře jsou pak za trest, protože je to, nepřekvapivě, titěrné.

- nebo použít Delphi DPI aware a designer nastavit na Automatic (Screen PPI), což nejspíš funguje správně, když se nepoužívá dědění formulářů. Pokud ho ale používám, tak je to zmršené v IDE i v runtime (kromě postupu, co jsem napsal minule, a kterým jsem schopen všechny formuláře převést na 150 %, tj. 144 DPI, a pak se pokud možno dalších 10 let vyhnu koupi jiného monitoru).

Frame v režimu Automatic (Screen PPI) blbnou i v IDE (myslím, že to bylo v případě, že jsem měl otevřený pouze .dpr a otevřel jsem soubor s Frame; když už jsem měl otevřený nějaký formulář, tak se i Frame otevřel správně, ale mohla to být i náhoda, dál jsem to nezkoumal).

Ty mi nerozumis, ja to chapu presne tak, az na to posledni, kdy mi prijde, ze to je vetsi problem s prepoctem na 96DPI nez z Low-DPI na 144DPI, ale nemuzu rict na jisto. Proto jsem pouzival Low-DPI designer.
Embarcadero MVP - Czech republic

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1596
  • Karma: 52
    • Verze Delphi: 11.3
Re:Delphi 12.2 a HDPI monitor
« Odpověď #7 kdy: 17-02-2025, 08:27:15 »
Ty mi nerozumis, ja to chapu presne tak, az na to posledni, kdy mi prijde, ze to je vetsi problem s prepoctem na 96DPI nez z Low-DPI na 144DPI, ale nemuzu rict na jisto. Proto jsem pouzival Low-DPI designer.

No principiálně je vždycky lepší dělat jen up-scaling, tj. ideální by bylo, kdyby designer měl další režim, kdy by se pro komponenty tvářil, že je v 96 dpi, a jen by to pro programátora na obrazovce zvětšil třeba na těch 150 %, aby nemusel formuláře navrhovat s lupou před monitorem. Výsledkem by bylo, že by nebyl vůbec žádný problém s přenosem mezi počítači s různě nastaveným dpi.

Momentálně tam ale někde mají chybu, která ty formuláře vyloženě kazí - mám pocit, jako když komponenty z předka přeškáluje dvakrát místo jednou, viz ty obrázky, co jsem přikládal - na tlačítkách je to dobře vidět (jsou to formuláře udělané ještě na starém monitoru s 96 DPI, 100 %). A to je pak blbě i v runtime (resp. v runtime je to možná blbě až poté, co provedu nějakou změnu v tom předkovi, ale to už si nejsem jistý, každopádně tak jsem si toho všimnul, že to bylo špatně v běžící aplikaci).
« Poslední změna: 17-02-2025, 08:29:12 od vandrovnik »

Offline František

  • Guru
  • *****
  • Příspěvků: 917
  • Karma: 8
    • Verze Delphi: comunity 10.4.2, D2007, D12, D2009
Re:Delphi 12.2 a HDPI monitor
« Odpověď #8 kdy: 18-02-2025, 20:26:16 »
toto mi vzdy zabralo... mam to aj na WIN11 a d2007
- aplikovat na exe alebo link cez vlasnosti-kompatibilita-zmenit nastaveni DPI ...
- to dole prepis .. - obejit... a vybrat aplikace
« Poslední změna: 18-02-2025, 20:29:40 od František »