VB6 : différence de taille de font XP <--> Seven

Résolu
Renaud974 Messages postés 15 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 17 novembre 2012 - 16 nov. 2012 à 14:20
Renaud974 Messages postés 15 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 17 novembre 2012 - 17 nov. 2012 à 10:50
Bonjour,

Je suis confronté au problème suivant : je développe sous XP en VB6 une application que je souhaite également faire tourner sous Seven.

J'utilise la police par défaut de vb6. Sous Seven, elle apparaît agrandie.

J'ai fait pas mal de recherches sur le sujet, mais je n'ai rien trouvé d'exploitable à mon niveau.

Du coup j'ai écrit un petit utilitaire qui permet de demander une taille de police et de lire la taille de ce qui est affiché par VB (ben oui, c'est pas pareil!), on voit que la police par défaut de VB accepte des tailles de 8.25 - 9.75 - 12 - 13.5...
J'ai demandé à un ami de faire tourner sous Seven (mon ordi sous Seven est dans des cartons de déménagement) et il obtient des tailles de 11.5 - 11.75 - 14.75...
Au vu d'une capture d'écran, la taille 11.5 sous Seven correspond à 9.75 sous XP et il est impossible d'obtenir l'équivalent à 8.25

Ci-dessous le code du petit soft que j'ai écrit pour tester ça (le .exe dans le lien ci-dessus).
Option Explicit

Dim TaillePolice As Single

Private Sub Form_Load()
   TaillePolice = 8
   lblTaillePolice.Caption = CStr(TaillePolice)
   lblTexteDeTest.FontSize = TaillePolice
   lblTailleAffichee = CStr(lblTexteDeTest.FontSize)
   chkFond.Value = vbChecked
End Sub

Private Sub cmdTaillePolice_Click(Index As Integer)
   Select Case Index
   Case 0
   'diminuer la taille
      If TaillePolice >3 Then TaillePolice TaillePolice - 0.25
   Case 1
   'augmenter la taille
      If TaillePolice < 100 Then TaillePolice = TaillePolice + 0.25
   End Select
   lblTaillePolice.Caption = CStr(TaillePolice)
   lblTexteDeTest.FontSize = TaillePolice
   lblTailleAffichee.Caption = CStr(lblTexteDeTest.FontSize)
End Sub

Private Sub chkCadre_Click()
   If chkCadre.Value = vbChecked Then
      lblTexteDeTest.BorderStyle = 1
   ElseIf chkCadre.Value = vbUnchecked Then
      lblTexteDeTest.BorderStyle = 0
   End If
End Sub

Private Sub chkFond_Click()
   If chkFond.Value = vbChecked Then
      lblTexteDeTest.BackStyle = 1
   ElseIf chkFond.Value = vbUnchecked Then
      lblTexteDeTest.BackStyle = 0
   End If
End Sub


Il semblerait donc que la police utilisée sous XP ne soit pas présente sur Seven et qu'il utilise une autre police dont il agrandit la taille. En effet, sous XP je suis en 8.25 et ça devient du 11.5 sous Seven, équivalent à du 9.75 XP...
Sauriez-vous me dire comment faire pour avoir le même aspect sous XP et Seven? Sans bidouiller la base de registre, il faudrait un truc qui marche assez simplement. Genre changer de police, en installer une nouvelle, ou un truc du genre (que je n'ai jamais fait, mais je peux apprendre...).

Merci d'avance de votre aide.
Bien cordialement,
Renaud.

6 réponses

Renaud974 Messages postés 15 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 17 novembre 2012
17 nov. 2012 à 09:52
Bonjour,

J'avais pensé à 1), mais je trouve ça trop lourd et un peu en-dehors de ma compétence actuelle.
J'étais en train de coder 2).
Est-il possible de modifier la police par défaut de vb6 sans le faire dans le code?

Pour le moment, j'utilise un objet StdFont, mais ça m'oblige à l'affecter à tous mes contrôles, ce qui est un peu lourd :
 Dim PoliceNormal As New StdFont
   Dim PoliceGras As New StdFont
   
   '********* Gestion des polices : on passe tout en Arial *********
   PoliceNormal.Name = "Arial"
   PoliceGras.Name = "Arial"
   PoliceNormal.Bold = False
   PoliceGras.Bold = True
   PoliceNormal.Size = 9
   PoliceGras.Size = 9
   ' affectation des polices
   Set Tree.Font = PoliceNormal  'treeview
   Set Label5.Font = PoliceGras  'titres
   'etc.
  


Renaud.
3
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
17 nov. 2012 à 01:36
Bonjour,

VB6 n'est pas très récent, du coup quelques incompatibilités peuvent apparaitre.

Ensuite, j'ai aussi constaté ce problème, mais sans trouver d'autres solutions que de comparer la version avant et après pour mettre les textes à la bonne taille.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Renaud974 Messages postés 15 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 17 novembre 2012
17 nov. 2012 à 04:14
Bonjour,

Merci pour votre réponse. Vous serait-il possible de préciser ce que vous entendez par "comparer la version"? La version de l'OS?

Renaud.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 nov. 2012 à 08:33
Bonjour,
Je ne note personnellement pas cette différence entre les deux OS, pour la même police
Il est par contre clair que si la police MS Sans Serif (celle utilisée par défaut par VB6) n'est pas installée sur Seven, elle va être remplacée par une police disponible, avec les aléas dénoncés.
Solutions :
1) Lourde : installer MS Sans Serif sous Seven (la distribuer avec ton appli)
2) Légère et bien plus souple : Choisir (en mode développement) une police plus "partagée", telle Tahoma

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 nov. 2012 à 10:13
Est-il possible de modifier la police par défaut de vb6 sans le faire dans le code?

Pas à ma connaissance
Tu n'es par ailleurs bien entendu pas obligé de le faire par code, la chose étant possible depuis la fenêtre des propriétés de chaque contrôle.
Si maintenant, tu cherches à ne pas trop travailler depuis la fenêtre des propriétés de chaque contrôle, un petit truc : tu édites (depuis l'explorateur) chaque fichier .frm que tu ouvres avec le bloc-notes. Et tu y modifies tes fonts par remplacement.
Je te conseille Tahoma.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Renaud974 Messages postés 15 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 17 novembre 2012
17 nov. 2012 à 10:50
J'ai essayé Tahoma, mais c'est un peu large je trouve. Je préfère le faire par le code et l'objet StdFont car ça permet de faire des essais de font différentes en changeant juste deux lignes.

Je viens de recevoir confirmation que ça fonctionne maintenant avec ma modif'.

Merci de vous être penché sur mon problème.

Renaud.
0
Rejoignez-nous