IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Use LCL scaling (Hi-DPI) [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de danucc
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 70
    Par défaut Use LCL scaling (Hi-DPI)
    Bonjour à tous,
    Je tombe sur un os

    J'ai un programme qui sauve les dimensions de sa fenêtre principale dans in fichier .ini lors de la fermeture du dit programme.
    Le problème est que les valeurs des dimensions sauvées ( frmMain.Width et frmMain.Height) apparaissent doublées sur certains PC.
    Donc, à la réouverture du programme la fenêtre est de double grandeur.
    Pour être clair, première ouverture le fichier .ini contient 1000 x 500, la fenêtre correspond bien à ces valeurs, on ferme le programme et le fichier .ini contient 2000 x 1000.

    Je précise que le problème se produit sur un portable Linux-Mint à jour et également sur des portable Windows (programme généré par cross compilation Windows sur un PC Linux.Mint qui lui ne reproduit pas le problème).
    Les 2 PC Linux (celui qui va et celui qui fait le problème) ont des écrans 4K, la même version de Linux-Mint et le même facteur de correction d'affichage.
    Le PC Windows de mon client, ne semble pas avoir un écran 4K, mais je n'en suis pas certain.

    Si je décoche "Use LCL scaling (Hi-DPI)", le problème ne se reproduit plus mais les fenêtres fille de l'application (par exemple les boites de dialogue) sont bien sûr illisibles sur les PC avec écran 4K.

    Quelqu'un a-t-il déjà été confronté à ce phénomène ?

    Encore un détail : Lazarus 2.3.0, mais apparemment cela se produit aussi sur la 2.12

  2. #2
    Membre confirmé Avatar de danucc
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 70
    Par défaut
    Bon, ben je me réponds à moi même...

    En fait, le problème est lié à la résolution PPI (Pixels Per Inch) de l'écran, comme mon écran de DEV est grand le PPI est de 96, bien que ce soit un 4K. Sur les portables il est de 120, 144 ou 192.
    J'ai donc ajouté une petite règle de trois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    var
      Largeur, Hauteur : integer;
    begin
      Largeur := Round(Form1.Width / (Forms.Screen.PixelsPerInch / 96));
      Hauteur := Round(Form1.Height / (Forms.Screen.PixelsPerInch / 96));
      iniFil := TIniFile.Create('TestSizeForm.ini');
      iniFil.WriteInteger('[FormSize]', 'Width', Largeur);
      iniFil.WriteInteger('[FormSize]', 'Height', Hauteur);
      iniFil.Free;
    end;
    et ça le fait.

    Par contre, j'ai pas saisi la raison qui fait qu'avec un écran qui a un PPI de 192 par exemple on met Form1.Width à 1000 lors du FormCreate et on se retouve avec 2000 quand on va le lire lors du FormClose.
    Enfin, c'est comme ça et on peut s'en accommoder, donc problème résolu!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Charger un Timage à partir d'un TimageList, Scale et DPI
    Par SergioMaster dans le forum Composants FMX
    Réponses: 0
    Dernier message: 13/10/2019, 08h09
  2. Réponses: 2
    Dernier message: 29/12/2017, 15h36
  3. Réponses: 7
    Dernier message: 09/11/2015, 17h22
  4. "use may clash"
    Par Jibees dans le forum Modules
    Réponses: 4
    Dernier message: 15/05/2003, 16h27
  5. Connaitre l'unitée à ajouter dans USES
    Par DelphiCool dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2002, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo