Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Avogadro - Novembre 02, 2022, 09:18:56 pm

Titolo: Monitor ad alta risoluzione
Inserito da: Avogadro - Novembre 02, 2022, 09:18:56 pm
Premessa generale

Dicono le leggi diMurphy

- Ogni programma si espanderà fino ad occupare tutta la memoria disponibile.

- Quando un sistema complesso non funziona, si scopre invariabilmente che è evoluto da un sistema più semplice che funzionava perfettamente.

- La causa numero uno dei problemi informatici sono le soluzioni informatiche.

- Ogni soluzione porta nuovi problemi.


Problema.
Sto lavorando ad un applicativo che richiede molte tabelle visualizzate ; questo per avere tutto "sott'occhio"
Tante tabelle = tante grid = spazio su un monitor normale (27 pollici) insufficente

Soluzione proposta.
Usare come monitor una tv da "50" con risoluzione 3000*2000 o piu' alta ancora .

All' apparenza cosa buona e giusta e fonte di salvezza.

Che succede in pratica.
Ma dopo la compilazione, a "run-time"  la risoluzione adottata del programma non è quella quella impostata a monitor a "design time".
 
Riavviando il pc le cose si sistemano - l'esegubile a runtime ha la risoluzione giusta- ; ma questo complica le cose in fase di sviluppo.

Finisse qui: i menu pop up non hanno la stessa risoluzione del form.

Il problema non si pone usando un pc con monitor un monitor per pc ad alta risoluzione.

Dov'è il problema ? In giro non si trovano piu' monitor maggiori del classico 27 pollici e non voglio usare l' approccio "classico" di vedere i dati scollegati tra di loro dopo query non documenate da nessuna parte - si c'è lo shop on line  ma non mi fido -.

Le bizze del codice generato dal complitaore sono un problema di scheda grafica non "all'altezza" ?  Devo cambiare pc associato alla tv "monitor ?

Facile a dirsi, con i prezzi che ci sono in giro ...
 
Qualche idea su come uscire da sto casino ?

Titolo: Re:Monitor ad alta risoluzione
Inserito da: DragoRosso - Novembre 02, 2022, 10:30:59 pm
Io, per contrastare Murphy mi attrezzo così:

- ciò che funziona non si tocca;

- ciò che non c'è non si rompe.

Poca cosa, ma a qualcosa serve  ;D

Rispetto invece ai monitor e alle alte risoluzioni, il problema è contingente e non del tutto risolto (anzi oserei dire tutt'altro che risolto).
La problematica non è tanto la risoluzione di per se, ma più che altro i DPI usati nello sviluppo, i DPI usati a runtime e gli eventuali "ridensionamenti" a runtime e/o a design time.

I controlli, in Windows (ma anche in altri ambienti non và meglio pure se costruiti con le varie tecniche), sono costruiti normalmente da librerie di sistema e quindi parzialmente ingestibili direttamente. Da ciò le problematiche.

Non ho pensato neanche lontanamente ad usare DPI AWARENESS con Lazarus, ma con Delphi per adesso uso la tecnica delle GDI  SCALING settabile in Delphi (ossia i controlli vengono ridimensionati in grafica pura). Tutte le tecniche messe a disposizione non hanno dato esito positivo.

Uso monitor di tutti i tipi, dalle TV agli schermi da 5 pollici e non c'è una applicazione che giri in maniera equivalente (mi accontenterei) su tutti i monitor senza usare il settaggio GDI SCALING.

Non posso darti consigli, primo perchè ho notato che il comportamento grafico di Lazarus su DPI diversi (io uso un portatile con monitor 3K per lo sviluppo + monitor esterno da 4k) non è propriamente corretto, a meno di non settare DPI e RIDIMENSIONAMENTO IDENTICI.

Attendo che qualche altro utente del forum porti una soluzione o magari un piccolo mattoncino per risolvere questo puzzle.

Ciao
Titolo: Re:Monitor ad alta risoluzione
Inserito da: Avogadro - Novembre 02, 2022, 10:34:38 pm
Ok, grazie.

 :)
Titolo: Re:Monitor ad alta risoluzione
Inserito da: bonmario - Novembre 03, 2022, 08:17:00 am
Potresti provare con 2 monitor da 27?
Faresti emettere al tuo programma 2 form, e l'utente dovrebbe, dopo aver avviato il programma, spostare uno dei 2 form sul secondo monitor.

Ciao, Mario
Titolo: Re:Monitor ad alta risoluzione
Inserito da: nomorelogic - Novembre 03, 2022, 10:18:26 am
ora non ho monitor di quella portata per fare prove
ma tempo fa ho dovuto trovare una soluzione ad un problema simile al tuo

prova con TForm.ScaleBy
la puoi mettere nella Create o in FormShow
esempio:
Codice: [Seleziona]
   self.ScaleBy(96, 120);

dovrai fare delle prove ma può essere l'uovo di colombo :)
Titolo: Re:Monitor ad alta risoluzione
Inserito da: DragoRosso - Novembre 03, 2022, 10:44:45 am
Stay in touch, stò testando la funzionalità dei componenti Lazarus con vari settaggi dei monitor (compresi ridimensionamenti 100% / 125%, 150%).

Lo "ScaleBy" non è sufficiente, adatta solo la dimensione e la posizione dei controlli grafici (e neanche di tutti, almeno in Delphi) in base alla risoluzione e la uso da anni, io sviluppo in FULL HD o 3K o 4K ma normalmente il monitor d'uso sono FULL HD quando và bene e quindi uso ScaleBy per ridimensionare (i due parametri di ScaleBy li uso per ridimensionare rispetto alla Width o alla Height a seconda delle proporzioni da mantenere).

Ci sono controlli come le TEdit e derivati (esempio TComboBox) che si aggiornano in base ai font, e se non settate bene si rischia di agire "doppiamente" e fare un disastro.

Il DPI (o il PPI) è il vero elemento di discontinuità. e alcuni elementi (vedi uno per tutti le TCheckBox) non possono essere ridimensionati.

Comunque, siccome ho progetti dove la parte grafica ha una importanza non secondaria, mi sono messo di lena per cercare di risolvere o tamponare il problema una volta per tutte.

Allego, un tanto per conoscenza, una la maschera di settaggio dei ridimensionamenti (NOTARE CHE SI PUO' DIFFERENZIARE TESTO E GRAFICA) di Windows ... con una bella nota esplicativa.  ??? ::)

P.S.: mi piace particolarmente la seguente esplicitazione "può essere difficile tornare alle impostazioni originali" ....  :-[ :-[ :-[

Ciao
Titolo: Re:Monitor ad alta risoluzione
Inserito da: Avogadro - Novembre 03, 2022, 02:41:01 pm
Potresti provare con 2 monitor da 27?
Faresti emettere al tuo programma 2 form, e l'utente dovrebbe, dopo aver avviato il programma, spostare uno dei 2 form sul secondo monitor.

Ciao, Mario

Ciao, quella dei 2 monitor è una soluzione che ho adottato d adiversi anni nell' ambito dell' "office automation", alias i miei collaboratori hanno tutti 2 monitor su cui lavorare  e i risulati sono egregi , ci si semplifica la vita in maniera eccezionale;

il problema sono io" che mi illudo di salvare il mondo portandomi il lavoro a casa dove poi non ho 2 monitor ma un pc di qualche anno (fine 2019 mi pare) fa connesso  fino a "ieri" a una tv di inizo 2014; poi ho provato una tv del 2022 per avere un monitor piu' grande e ... e lazarus a compile time è andato in crash .

Tutto qui.
Titolo: Re:Monitor ad alta risoluzione
Inserito da: Avogadro - Novembre 03, 2022, 02:41:49 pm
ora non ho monitor di quella portata per fare prove
ma tempo fa ho dovuto trovare una soluzione ad un problema simile al tuo

prova con TForm.ScaleBy
la puoi mettere nella Create o in FormShow
esempio:
Codice: [Seleziona]
   self.ScaleBy(96, 120);


dovrai fare delle prove ma può essere l'uovo di colombo :)

Ok, grazie, provero' questa soluzione.
Titolo: Re:Monitor ad alta risoluzione
Inserito da: Avogadro - Novembre 03, 2022, 02:44:46 pm
Stay in touch, stò testando la funzionalità dei componenti Lazarus con vari settaggi dei monitor (compresi ridimensionamenti 100% / 125%, 150%).

Lo "ScaleBy" non è sufficiente, adatta solo la dimensione e la posizione dei controlli grafici (e neanche di tutti, almeno in Delphi) in base alla risoluzione e la uso da anni, io sviluppo in FULL HD o 3K o 4K ma normalmente il monitor d'uso sono FULL HD quando và bene e quindi uso ScaleBy per ridimensionare (i due parametri di ScaleBy li uso per ridimensionare rispetto alla Width o alla Height a seconda delle proporzioni da mantenere).

Ci sono controlli come le TEdit e derivati (esempio TComboBox) che si aggiornano in base ai font, e se non settate bene si rischia di agire "doppiamente" e fare un disastro.

Il DPI (o il PPI) è il vero elemento di discontinuità. e alcuni elementi (vedi uno per tutti le TCheckBox) non possono essere ridimensionati.

Comunque, siccome ho progetti dove la parte grafica ha una importanza non secondaria, mi sono messo di lena per cercare di risolvere o tamponare il problema una volta per tutte.

Allego, un tanto per conoscenza, una la maschera di settaggio dei ridimensionamenti (NOTARE CHE SI PUO' DIFFERENZIARE TESTO E GRAFICA) di Windows ... con una bella nota esplicativa.  ??? ::)

P.S.: mi piace particolarmente la seguente esplicitazione "può essere difficile tornare alle impostazioni originali" ....  :-[ :-[ :-[

Ciao

Ok, grazie, provero' anche questa soluzione.

 
Titolo: Re:Monitor ad alta risoluzione
Inserito da: DragoRosso - Novembre 03, 2022, 06:04:21 pm
Propongo la lettura di questo pdf (con all'interno anche un test). Anche se non è aggiornatissimo esplica molto bene il concetto DPI dei monitor.

http://download.ec-software.com/delphi-developers-guide-4k.zip (http://download.ec-software.com/delphi-developers-guide-4k.zip)

E' descritto per Delphi, ma ritengo che vado di pari passo con Lazarus.

L'esempio si converte senza problemi (basta eliminare dalle USES i prefissi WinApi., System., etc ... dall'elenco delle unit).

Ciao
Titolo: Re:Monitor ad alta risoluzione
Inserito da: nomorelogic - Novembre 04, 2022, 09:42:55 am
visto che ci siamo, questi link sono per lazarus/fpc

https://wiki.lazarus.freepascal.org/High_DPI
https://lazarus.lazarus.freepascal.narkive.com/FXOj5STa/dpi-setting-with-and-applications