Lors de la conception de formulaires dans Delphi, il est souvent utile d'écrire le code afin que votre application (formulaires et tous les objets) soit essentiellement la même quelle que soit la résolution d'écran..
La première chose à retenir au début de la conception du formulaire est de savoir si vous allez autoriser ou non la mise à l'échelle du formulaire. L'avantage de ne pas mettre à l'échelle est que rien ne change au moment de l'exécution. L'inconvénient de ne pas mettre à l'échelle est que rien ne change à l'exécution (votre formulaire peut être beaucoup trop petit ou trop grand pour être lu sur certains systèmes s'il n'est pas mis à l'échelle).
Si vous ne souhaitez pas mettre le formulaire à l'échelle, définissez Escaladé à Faux. Sinon, définissez la propriété sur True. Définissez également Défilement automatique à False: l'inverse signifierait de ne pas modifier la taille du cadre du formulaire lors de l'exécution, ce qui ne semble pas bon lorsque le contenu du formulaire faire changer la taille.
Définissez la police du formulaire sur une police TrueType évolutive, comme Arial. Seul Arial vous donnera une police dans un pixel de la hauteur souhaitée. Si la police utilisée dans une application n'est pas installée sur l'ordinateur cible, Windows sélectionnera une police alternative dans la même famille de polices à utiliser à la place.
Définissez le formulaire Position propriété à autre chose que poDesigned, qui laisse le formulaire où vous l'avez laissé au moment du design. Cela se termine généralement loin vers la gauche sur un écran 1280x1024 et complètement hors de l'écran 640x480.
Ne surchargez pas les contrôles sur le formulaire, laissez au moins 4 pixels entre les contrôles afin qu'aucun changement d'un pixel dans les emplacements des bordures (en raison de la mise à l'échelle) n'apparaisse comme des contrôles qui se chevauchent..
Pour les étiquettes sur une seule ligne qui sont alLeft ou bien aligné, défini AutoSize à Vrai. Sinon, définissez AutoSize à faux.
Assurez-vous qu'il y a suffisamment d'espace vide dans un composant d'étiquette pour permettre les changements de largeur de police - un espace vide qui représente 25% de la longueur de la longueur d'affichage de la chaîne actuelle est un peu trop mais sûr. Vous aurez besoin d'au moins 30% d'espace d'extension pour les étiquettes de chaîne si vous prévoyez de traduire votre application dans d'autres langues. Si AutoSize est False, assurez-vous de définir la largeur d'étiquette de manière appropriée. Si AutoSize est vrai, assurez-vous qu'il y a suffisamment de place pour que l'étiquette se développe d'elle-même.
Dans les étiquettes à lignes multiples et à mots croisés, laissez au moins une ligne d'espace vide en bas. Vous en aurez besoin pour rattraper le débordement lorsque le texte s'enroule différemment lorsque la largeur de police change avec la mise à l'échelle. Ne présumez pas que parce que vous utilisez de grandes polices, vous n'avez pas à autoriser le débordement de texte - les grandes polices de quelqu'un d'autre peuvent être plus grandes que les vôtres!
Soyez prudent lorsque vous ouvrez un projet dans l'EDI à différentes résolutions. Les formulaires PixelsPerInch La propriété sera modifiée dès l'ouverture du formulaire et sera enregistrée dans le DFM si vous enregistrez le projet. Il est préférable de tester l'application en l'exécutant de manière autonome et de modifier le formulaire avec une seule résolution. L'édition à différentes résolutions et tailles de police entraîne des problèmes de dérive et de dimensionnement des composants. Assurez-vous que vous définissez votre PixelsPerInch pour tous vos formulaires à 120. La valeur par défaut est 96, ce qui provoque des problèmes de mise à l'échelle à une résolution inférieure.
En parlant de dérive des composants, ne redimensionnez pas un formulaire plusieurs fois, au moment de la conception ou de l'exécution. Chaque redimensionnement introduit des erreurs d'arrondi qui s'accumulent très rapidement car les coordonnées sont strictement intégrales. Au fur et à mesure que les quantités fractionnaires sont tronquées par rapport aux origines et tailles du contrôle à chaque rééchelonnement successif, les contrôles sembleront se déplacer vers le nord-ouest et devenir plus petits. Si vous souhaitez autoriser vos utilisateurs à redimensionner le formulaire un certain nombre de fois, commencez par un formulaire fraîchement chargé / créé avant chaque mise à l'échelle afin que les erreurs de mise à l'échelle ne s'accumulent pas..
En général, il n'est pas nécessaire de concevoir des formulaires à une résolution particulière, mais il est essentiel que vous examiniez leur apparence à 640x480 avec des polices grandes et petites, et à une résolution élevée avec des polices petites et grandes, avant de publier votre application. Cela devrait faire partie de votre liste de contrôle des tests de compatibilité du système.
Portez une attention particulière à tous les composants qui sont essentiellement unifilaires TMemos-des choses comme TDBLookupCombo. Le contrôle d'édition multiligne de Windows n'affiche toujours que des lignes entières de texte - si le contrôle est trop court pour sa police, un TMemo ne montrera rien du tout (un TEdit affichera le texte coupé). Pour de tels composants, il est préférable de les rendre quelques pixels trop grands que d'être un pixel trop petit et de ne pas afficher de texte du tout.
Gardez à l'esprit que toute mise à l'échelle est proportionnelle à la différence de hauteur de police entre l'exécution et la conception, ne pas la résolution en pixels ou la taille de l'écran. Rappelez-vous également que les origines de vos contrôles seront modifiées lorsque le formulaire sera mis à l'échelle - vous ne pouvez pas très bien agrandir les composants sans les déplacer un peu.
Une fois que vous savez quels problèmes garder à l'esprit lors de la mise à l'échelle des formulaires Delphi sur différentes résolutions d'écran, vous êtes prêt pour un codage.
Lorsque vous travaillez avec Delphi version 4 ou supérieure, plusieurs propriétés sont conçues pour nous aider à conserver l'apparence et la disposition des contrôles sur un formulaire.
Utilisation Aligner pour aligner un contrôle en haut, en bas à gauche ou à droite d'un formulaire ou d'un panneau et le conserver même si la taille du formulaire, du panneau ou du composant qui contient le contrôle change. Lorsque le parent est redimensionné, un contrôle aligné est également redimensionné de sorte qu'il continue à s'étendre sur le bord supérieur, inférieur, gauche ou droit du parent.
Utilisation Contraintes pour spécifier la largeur et la hauteur minimum et maximum du contrôle. Lorsque les contraintes contiennent des valeurs maximales ou minimales, le contrôle ne peut pas être redimensionné pour violer ces contraintes.
Utilisation Ancres pour garantir qu'un contrôle conserve sa position actuelle par rapport à un bord de son parent, même si le parent est redimensionné. Lorsque son parent est redimensionné, le contrôle conserve sa position par rapport aux bords sur lesquels il est ancré. Si un contrôle est ancré aux bords opposés de son parent, le contrôle s'étire lorsque son parent est redimensionné.
procédure ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
commencer
F.Scaled: = True;
F.AutoScroll: = False;
F.Position: = poScreenCenter;
F.Font.Name: = 'Arial';
si (Screen.Width ScreenWidth) alors commencez
F.Hauteur: =
LongInt (F.Height) * LongInt (Screen.Height)
div ScreenHeight;
F.Largeur: =
LongInt (F.Width) * LongInt (Screen.Width)
div ScreenWidth;
F.ScaleBy (Screen.Width, ScreenWidth);
fin;
fin;