Transport d'une application vers une config différente.

Résolu
jekifvb6 Messages postés 156 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 18 septembre 2006 - 4 mai 2005 à 16:32
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 5 mai 2005 à 02:45
Bonjour.


Merci à tous ceux qui postent des sources ou répondent sur le forum.





Je viens de développer une application en VB6 qui comporte, entre autre, :


- une form principale


Height = 9090

Width = 11940


Scalewidth = 11820


scaleheight = 8100


startup position = manual


window state = maximized





-une picture box dans cette form, plutôt ves le bas à droite avec les paramétres


Height = 12000


Width = 8000

scalewidth = 7935


scaleheight = 11940


left = 9480


top = 12000





Tous les scalemode sont en twip.





Voilà pour l'appli.


Je la fait tourner sur winXP, écran 17 pouces, résolution 1280*1024.


A ce stade l'ensemble était graphiquement homogéne.





Je transporte mon executable sur un autre poste: win 98 édition 2,
écran 15 pouces, résolution maximum 1024*768. Là, ma picturebox sort de
l'écran. Normal. La résolution n'est pas assez grande, je pense. Je met
l'écran 17 pouce sur cette machine, je pousse la résolutin à 1280*1024.
Et bien ma picturebox est encore coupée, elle dépasse, l'appli est
inutilisable. En changeant la taille en point par pouce (ppp) à 80% au
lieu de 100% j'arrive à recuperer mon application entière. Mais ce
n'est pas une solution envisageable à posteriori.





Je sens que je me gourre quelque part entre les notions de scalemode, à
savoir quelle est la meilleure unité à utiliser(twip, pixel, user) et
pourquoi mon appli n'est pas transportable.





Si quelqu'un peut m'éclairer sur ces notions ou bien ayant déjà résolu ce genre de pb.


Je ne pense pas être le seul à nécessiter de transporter mon applicatin
sur une autre machine à config légérement différente (autre os, autre
résolution, autre écran). Quelqu'un pouurrait-il me fournir une source
d'information pour ceux qui souhaitent que leur programme puisse
tourner à tous les coups.



Merci beaucoup, et d'avance.

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 mai 2005 à 02:45
Regarde aussi la fonction .ScaleX (et Y) qui permettent de calculer des valeurs entre deux systèmes de coordonnées (valable pour Form, PictureBox ou Printer)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 mai 2005 à 02:16
Salut
(Je ne suis pas un expert en graphisme, alors n'hésitez pas à corriger si erreur)Forme principale : A quoi te sert de donner une largeur et hauteur à ta forme puisque en dernier, tu lui dit d'épouser la taille de l'écran avec le WindowState vbMaximized ? pas d'intérêt, Width et Height ne servent qu'en WindowState vbNormal


Les ScaleWidth et ScaleHeight représentent les tailles de la zone interne de l'objet.
Si tu définis des valeurs personelles, le ScaleMode repasse en Owner (défini par l'utilisateur) : c'est une bonne méthode pour personaliser son espace de travail.
Si tu passes en mode Twips, il te renverra la taille dispo dans la forme en twips. Avec Screen.TwipsPerPixelX (et Y), qui vaut 15 en général, tu connaitras la zone de travail interne de ta forme en pixel.
Les positions (Left, Top, Width et Height) des objets à l'intérieur d'une forme sont relative au bord haut-gauche de l'espace interne de cette forme (pas de l'écran), cette fameuse zone dont on retrouve les dimensions avec ScaleWidth et ScaleHeight (quand on n'y touche pas)
Quand tu charges une image dans une PictureBox, ce ScaleMode n'a pas d'influence sur l'aspect de l'image : il te permettra seulement de définir une matrice de coordination :
Fais l'essai : Charge une image dans une PictureBox et dans Picture1_MouseDown, tu mets : Debug.Print X, Y
Lance et clique sur un endroit précis de ton image : Il t'affichera l'emplacement en Twips
Si dans le Form_Load tu ajoutes Picture1.ScaleHeight = 700 (valeur au pif), que tu relances et reclique au même endroit, la valeur de Y aura changée. En fait, c'est la même, mais à ton échelle.


Sur un écran, ce qui compte, c'est la résolution de l'écran pour déterminer la zone d'affichage maximale que tu pourras utiliser : Dispo dans Screen.Width et .Height (en Twips) - à approfondir pour en exclure la barre des taches - voir multiples sources à ce sujet ici

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
Rejoignez-nous