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

 Delphi Discussion :

Ecran haute résolution


Sujet :

Delphi

  1. #1
    Membre actif
    Ecran haute résolution
    Salut,

    Auriez vous dans vos bookmark un tuto à jour (Delphi 10.3.3 par exemple ?) sur la meilleur façon de gérer les écrans à haute densité de pixel ?

    Je m'étais penché sur le sujet avec Delphi 10.1 de mémoire (projet original en Delphi 7). J'avais un peu améliorer la situation sur mon portable de l'époque. Sur mon portable actuelle ce n'est pas terrible (densité de pixel plus élevé), et sur mon écran WQHD, c'est horrible ! Même les radio button et les checkbox sont horriblement pixelisés. Je vous laisse imaginer les graphique pour lequel mon code dessine dans PaintBox...

    Je cherche donc la meilleure solution pour gérer ces 2 cas.

    Si vous avez des bibliothèques d'icones gratuites, je suis preneur aussi

    Merci d'avance pour vos idées !

  2. #2
    Membre émérite
    Bonjour,

    je pense que tu utilises déjà la prise en charge DPI dans ton fichier Manifest ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
       <asmv3:windowsSettings
            xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
         <dpiAware>True/PM</dpiAware>
       </asmv3:windowsSettings>
    </asmv3:application>


    A+
    Charly

  3. #3
    Membre actif
    Salut,

    Merci pour ta réponse. Je ne m'étais jamais penché sur le manifest, laissant Delphi le générer automatiquement. J'en ai donc créé un, avec le bloc XML que tu cites et que j'ai retrouvé dans la doc, mais l'affichage est moche, pas de changement.

    Ecran normal :


    Ecran WQHD :


    Edit 1 : je viens de créer un projet from scratch, j'ai placé plusieurs composant de la JCL, et l'affichage est bon quelque soit l'écran. Un truc ne doit pas fonctionner dans la migration de mon projet Delphi 7...

    Edit 2 : J'ai comparé une Form de mon projet contenant une TCheckBox et un bouton (pas de panel ou de chose potentiellement complexe), et la Form du projet de test. Les propriétés sont identiques, idem sur les TCheckbox que je compare. J4ai l'impression que le Manifest n'est pas appliqué sur mon projet...

  4. #4
    Membre émérite
    Bonjour,

    j'avais créé une FAQ pour intégrer un fichier Manifest dans une appli D7 (voir ici)

    Cela doit aussi fonctionner pour D10

    Embarcadero explique ici comment personnaliser le fichier Manifest sous D10 Rio

    A+
    Charly

  5. #5
    Membre émérite
    Bonjour,

    Pas besoin de modifier le fichier Manifest dans les versions récentes.
    Il y a des options dans Projets/Options/Application/Manifest et il faudrait essayer de jouer avec les options : "Reconnaissance DPI" pour voir si ça permet de résoudre le problème.

  6. #6
    Membre expérimenté
    Le high DPI et les projets VCL est toujours en cours d'amélioration. Des évolutions devraient être présentes dans la 10.4

    Concernant les changements actuels, en plus du manifeste qui permet de gérer certaines choses automatiquement, il y a aussi les composants TImageCollection (à placer sur TDataModule) et TVirtualImageList (sur les fiches) qui permettent d'améliorer les visuels qu'on place sur nos éléments d'interface en fournissant directement plusieurs résolutions différentes de chaque et en laissant Delphi choisir la plus adaptée selon le type d'écran lorsque les API DPI sont disponibles.

  7. #7
    Membre actif
    Salut,

    J'ai réglé une partie du problème : le manifest. J'en ai créé un personnalisé, le résultat était mauvais. J'ai supprimé le fichier et laissé la config "personnalisé" dans Delphi. La compilation se fait quand même, avec les mêmes défauts. J'ai fini par trouver comment faire un "Clean" du projet, et le miracle s'est produit. Mon application sans manifest se lançait. J'ai donc remis l'option "automatique", et tout est bon maintenant pour les composants visuels.

    Maintenant je dois gérer tous les positionnements de composant sur les fiches calculés par le code (lorsque les ancres se comportent mal), et surtout, tout les tracés que je calcule moi même. J'avais trouvé un tuto (un des rares site sur le sujet) mais là ça ne fonctionne pas...

    Côté image, je n'ai pas compris comment utiliser TImageCollection (à placer sur TDataModule) et TVirtualImageList (sur les fiches). Auriez vous un bon guide ? La doc est pauvre pour moi :/

  8. #8
    Membre éprouvé
    Bonjour,

    Barnsten France et son animateur Prémartin ont mis en ligne une vidéo qui donne les bases pour utiliser TImageCollection et TVirtualImageList.

    J'ai regardé cela rapidement, il y a quelques jours. La vidéo contient l'essentiel pour comprendre, après il faut approfondir pour une utilisation plus personnelle.

    L'adresse pour trouver cette vidéo est : https://www.youtube.com/channel/UCSrWP5Y01uSHS3014Pfprlw/videos. Il existe d'ailleurs, à ce jour, 27 vidéos pour se former à Delphi VCL et FMX.

    J'espère que cela te rendre service.

    A+

  9. #9
    Rédacteur/Modérateur

    @declencher

    Quelques infos ici et .

  10. #10
    Membre actif
    Bonjour !

    @seabs : Excellente série de vidéo avec un animateur au top ! Je risque d'y passer quelques heures.

    @Andnotor : J'avais déjà testé une formule de ce type et ça ne fonctionne pas terriblement bien. Je vais creuser en lisant tes sujets.

    Vous avez tapé dans le mille, mille merci !

  11. #11
    Membre expérimenté
    La doc sur le sujet me parait pourtant suffisante : http://docwiki.embarcadero.com/RADSt...rtualImageList

    Que te faudrait-il pour mieux comprendre son usage et améliorer cette page ?

  12. #12
    Membre actif
    Salut,

    Sur le site de embarcadero, j'avais trouvé 2 pages, dont une qui se contentait de dire "Utilisez ces 2 composants", et je n'avais pas trouvé celle que tu cites. Merci pour l'info !

    Et encore bravo pour la vidéo

###raw>template_hook.ano_emploi###