Question

Nous allons de VB6 aussi rapidement que possible, mais en attendant, nous avons commencé à construire nos applications VB6 de la ligne de commande sur un serveur de génération.

Problème: Le serveur de build a un adaptateur vidéo de base et provoque les formes à tronquer jusqu'à la résolution de l'adaptateur de base plutôt que la hauteur et la largeur dans le formulaire lui-même

.

Une solution de contournement que nous avons découvert il faut aller dans l'événement Load de chaque formulaire et régler manuellement les propriétés de hauteur et la largeur aux tailles observées dans la fenêtre Propriétés du formulaire.

Ugh ..

Il y a plusieurs dizaines de formes dans cette application et plus d'applications avec plus des dizaines de formes à venir. Je veux construire un script pour gérer cela.

Deux questions:

1) Lorsque, dans le code / projet / etc puis-je trouver la hauteur et la largeur de la forme comme indiqué dans la fenêtre Propriétés? Une recherche du fichier * .frm ne se présente pas tous les gagnants; ni n'opeing le fichier * .frx et la conversion d'une hauteur connue ou Largeur à Hex (puis la recherche).

2) Y at-il quelque chose que je peux faire en plus de modifier chaque forme?

Merci d'avance.

Jon

Était-ce utile?

La solution

Le format FRM est documentée dans le manuel . Elle indique que la hauteur et la largeur sont stockés dans Twips, comme Angry Jim observé. Il n'explique pas ClientHeight et ClientWidth mais comme OneNerd et cmsjr ont dit, c'est la taille de l'intérieur de la forme (sans barres de menus et frontières). Le serveur de build peut également changer la ClientLeft et clientTop, si vous avez des formes avec StartupPosition ensemble au manuel.

Ne jamais régler la hauteur et la largeur de la forme au moment de l'exécution. Ceux-ci incluent la barre de menu et les bordures, qui sont différentes épaisseurs sur les différentes versions de Windows ou avec des thèmes différents. Donc, vous obtiendrez les mauvaises tailles. Mettre à la place du ScaleHeight et ScaleWidth, qui sont les dimensions de l'intérieur de la forme. Le moteur d'exécution VB6 calcule la hauteur appropriée et la largeur de celles-ci.

Et enfin, juste acheter un nouveau serveur de build (ou une nouvelle carte vidéo). Diriger tous les développeurs au patron en agitant des torches enflammées et, ou expliquer des fourches peut-être calmement la différence entre le coût d'un PC et le coût du temps de développement.

Autres conseils

Si vous ouvrez les fichiers .frm dans le bloc-notes ou tout autre éditeur de texte brut, les tailles de forme sont définies quelques lignes du haut:

par exemple:

 ClientHeight    =   8445
 ClientLeft      =   60
 ClientTop       =   450
 ClientWidth     =   9960

Je ne sais pas pourquoi vous rencontrez le problème - semble étrange - mais si votre serveur de build est à l'origine d'un problème, les options que je vois sont (1) la modification de votre serveur de build (ou la mise à niveau de la carte vidéo peut-être), ou écrit dans le code en cas de charge pour chaque forme que vous mentionnez, bien que cela puisse avoir un effet sur le centrage de la forme si vous avez le postion-> centre situé dans l'IDE afin de vérifier que vos formulaires sont toujours centrés si c'est le résultat souhaité.

Basé sur ce je dirais que la hauteur comme on le voit dans la fenêtre de propriétés est une valeur calculée qui inclut la ClientHeight de la forme (qui se trouve dans le .frm) + la hauteur de la barre frontière et le titre. Donc ClientHeight est probablement le numéro que vous recherchez.

La hauteur et la largeur sont stockées dans Twips (une unité indépendante du dispositif de mesure), il faut donc diviser par Screen.TwipsPerPixelX et -Y pour obtenir la valeur correcte. Pour la plupart des écrans, ce sera 15. (En utilisant la largeur dans l'exemple de OneNerd, 9960 twips est 664 pixels.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top