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

EDI Delphi Discussion :

Application DPI (bien que le manifeste semble bon)


Sujet :

EDI Delphi

  1. #1
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 257
    Points : 169
    Points
    169
    Par défaut Application DPI (bien que le manifeste semble bon)
    Bonjour à tous,

    J'ai du mal à faire en sorte que mon application Delphi (10.1 Berlin Update 2) se comporte correctement en haute résolution sur Windows 10.

    J'ai intégré se manifeste directement dans les options du projet (Projet\Options...\Application\Fichier manifeste [Personnaliser])
    Manifeste personnalisé : C:\....\Win.DPI.Manifeste

    J'utilise le manifeste suivant comme modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity
        name="MyApp"
        processorArchitecture="*"
        version="1.0.0.0"
        type="win32"
      />
      <description>Test</description>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
          />
        </dependentAssembly>
      </dependency>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel
              level="asInvoker"
              uiAccess="false"
            />
          </requestedPrivileges>
        </security>
      </trustInfo>
      <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings>
          <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
          <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
    PerMonitorV2, PerMonitor</dpiAwareness>
        </windowsSettings>
      </application>
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
          <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
          <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
          <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
          <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
        </application>
      </compatibility>
    </assembly>
    Info j'utilise Delphi Berlin sur un PC Windows 7.
    Je sais pas si sa une incidence sur compatibilité de l'application avec un autre système exploration Windows 10 en l'occurrence.
    Voici le résultat de affichage :

    Windows 7 :
    Nom : Win7.PNG
Affichages : 182
Taille : 35,4 Ko

    Windows 10 avec la haute résolution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
    Nom : Win10 DPI H.PNG
Affichages : 179
Taille : 49,1 Ko

    Windows 10 sans la haute résolution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">False/PM</dpiAware>
    Nom : Win10 DPI No H.PNG
Affichages : 179
Taille : 43,8 Ko

    Dans le 2 cas l'application est inutilisable sous Windows 10.
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 680
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 680
    Points : 13 086
    Points
    13 086
    Par défaut
    C'est à toi de prendre en compte la résolution lors de dessins personnalisés, toutes les quotes doivent être MulDiv.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Left := 10;                                              // Faux
    Left := MulDiv(10, CurrentPPI, USER_DEFAULT_SCREEN_DPI); // Juste
    Tu peux ensuite simplifier cela par un class helper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    type
      TControlHelper = class Helper for TControl
      public
        function PPI(aValue :integer) :integer;
      end;
     
    implementation
     
    { TControlHelper }
     
    function TControlHelper.PPI(aValue: integer): integer;
    begin
      Result := MulDiv(aValue, CurrentPPI, USER_DEFAULT_SCREEN_DPI);
    end;
    que tu invoquera ainsi :
    A noter que ScaleValue est apparu en D11.2.

  3. #3
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    La prise en charge des dernières API de Windows 10 en matière de résolution d'écran (et de l'OS) date de la 10.3 Rio (octobre 2018). Sur Berlin tout est à faire à la main si tu veux vraiment faire les choses comme tu veux.

    Si tu en as la possibilité, fais l'upgrade à la 11.3 Alexandria. Au moins pour tester, regarde avec une version d'évaluation (pas la community si tu es dans une activité commerciale avec une licence payante existante) pour voir ce que ça donne sur ton projet.

  4. #4
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 257
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par pprem Voir le message
    La prise en charge des dernières API de Windows 10 en matière de résolution d'écran (et de l'OS) date de la 10.3 Rio (octobre 2018). Sur Berlin tout est à faire à la main si tu veux vraiment faire les choses comme tu veux.

    Si tu en as la possibilité, fais l'upgrade à la 11.3 Alexandria. Au moins pour tester, regarde avec une version d'évaluation (pas la community si tu es dans une activité commerciale avec une licence payante existante) pour voir ce que ça donne sur ton projet.
    Bonjour, J'ai testé 11.3 Alexandria perso une vrai galère trop de bugs (Code source qui ne affiche pas, Impossible de voir la Fiche, ETC...) ça marche une fois sur 2.

    du coup j'ai réinstaller Berlin 10.1 Update 2.
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  5. #5
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 257
    Points : 169
    Points
    169
    Par défaut
    Je me demande si https://www.alphaskins.com/ ne gère pas automatiquement le DPI ?

    ou https://www.almdev.com/prods/styleco...econtrols.html
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par XeGregory Voir le message
    Bonjour, J'ai testé 11.3 Alexandria perso une vrai galère trop de bugs (Code source qui ne affiche pas, Impossible de voir la Fiche, ETC...) ça marche une fois sur 2.
    chelou

    Citation Envoyé par XeGregory Voir le message
    Je me demande si https://www.alphaskins.com/ ne gère pas automatiquement le DPI ?

    ou https://www.almdev.com/prods/styleco...econtrols.html
    en fait ils le font mais sur les versions plus récentes de Delphi pour la partie High DPI de leurs thèmes

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 680
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 680
    Points : 13 086
    Points
    13 086
    Par défaut
    Peu importe les composants, si tu les positionnes en runtime ou procèdes à des dessins personnalisés c'est à toi de fournir des coordonnées corrects.

  8. #8
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 257
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par pprem Voir le message
    chelou



    en fait ils le font mais sur les versions plus récentes de Delphi pour la partie High DPI de leurs thèmes
    J'ai testé la version Embarcadero 11.0 en Version lite (Sans les compilateurs Android, Linux, etc...). ça fonctionne à merveille

    Il y a quand même un problème lors de l'ouverture d'un projet créer sur une version antérieure style Berlin par exemple, il n'affiche pas les composants non visuel sur la fiche ImageList, OpenDialog, Etc...


    Ceci dit mon problème DPI est résolu visa cette version
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  9. #9
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par XeGregory Voir le message
    Il y a quand même un problème lors de l'ouverture d'un projet créer sur une version antérieure style Berlin par exemple, il n'affiche pas les composants non visuel sur la fiche ImageList, OpenDialog, Etc...
    un Ctrl+H devrait résoudre cette anomalie qui en fait n'en est pas une : dans la barre d'outils tu trouveras une icône masquant/affichant les composants non visuels (il doit aussi y avoir un truc dans le menu conceptuel ou le menu "voir")

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 22/05/2019, 11h15
  2. [MySQL-5.7] erreur #1062 avec une REPLACE INTO alors que tout semble bon
    Par trucmuche2005 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/10/2018, 16h59
  3. [Dates] calcul de date est ce que mon code est bon?
    Par carmen256 dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2006, 11h30
  4. [MySQL] Boucle qui ne fonctionne pas bien que la 1ère fois
    Par R.L. dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/05/2006, 21h59

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