2010-02-19 9 views
2

Sur mon ordinateur portable avec une résolution d'écran de 1280x800 j'ai développé une application. Maintenant, je veux l'utiliser sur un ordinateur de bureau avec une résolution de 1600x1200.Delphi 7: Mise à l'échelle de l'application

Bien sûr, il est trop petit sur l'ordinateur de bureau. J'ai défini les tailles afin que je puisse voir la forme entière sur mon cahier. Mais sur l'ordinateur de bureau, tout devrait être redimensionné.

Mais sur le grand écran, les choses ne devraient pas être considérées plus ce qui signifie que la même quantité d'informations peuvent être affichées. Les choses devraient avoir une hauteur et une largeur plus élevées afin que plus d'informations puissent être affichées.

Dans le code compliqué, je veux dire quelque chose comme ce qui devrait exécuter automatiquement une fois lorsque le formulaire est créé (OnCreate):

devResolutionX := 1280; 
devResolutionY := 800; 
useResolutionX := 1600; // how to get/read out this property? 
useResolutionY := 1200; // how to get/read out this property? 
Form1.Height := Form1.Height+devResolutionY-useResolutionY; 
Form1.Height := Form1.Width+devResolutionX-useResolutionX; 
// do that with all components which makes this approach complicated 

Que dois-je travailler pour atteindre cet objectif?

  • ScaleBy
  • alignements
  • ancres

Merci beaucoup à l'avance!

Répondre

3

Il semble que vous avez juste besoin de définir la propriété BorderStyle de votre formulaire bsSizeable. Cela permettra à l'utilisateur de redimensionner le formulaire (ou de le maximiser) comme bon lui semble.

Vous voudrez également utiliser des ancrages ici. Si vous définissez les ancres akLeft, akTop, akRight et akBottom pour tous les composants de votre formulaire, ils seront redimensionnés avec le formulaire.

Dès que vous faites cela, cependant, vous rendrez vite compte que probablement n'a pas été fait ce que vous vouliez faire après tout. Ces composants en croissance vont probablement se chevaucher. Donc, vous allez devoir réfléchir aux limites des composants ancrés et ceux qui ne le sont pas.

Parfois, vous aurez besoin de faire un peu de composants plus compliqué que le déplacement et le dimensionnement peut être manipulé par des ancres seul. Dans ces cas, vous souhaiterez gérer l'événement OnResize du formulaire. Cet événement sera déclenché chaque fois que l'utilisateur redimensionne le formulaire, et il vous donnera l'occasion de faire quelques calculs pour recalculer les tailles et les positions de certains composants.

+0

Merci beaucoup! C'est exactement ce que j'ai fait maintenant. Cela fonctionnait assez bien avec les ancres, mais certains composants bougeaient et se redimensionnaient plus que d'autres. Donc j'utilise OnResize en plus. – caw

1

Il suffit de définir correctement vos ancres et les informations supplémentaires s'afficheront. Je ne recommanderais pas de forcer par programmation une hauteur et une largeur arbitraires. La meilleure chose à faire est d'utiliser l'événement OnClose du formulaire pour enregistrer la hauteur et la largeur du formulaire, puis définir la hauteur et la largeur avec OnCreate.

+0

Merci, avec des ancrages corrects cela fonctionne bien. Et sauvegarder les valeurs de hauteur et de largeur dans OnClose est également une bonne idée. – caw