Fentres dans delphi [Résolu]

Messages postés
94
Date d'inscription
samedi 31 décembre 2005
Dernière intervention
26 juin 2013
- - Dernière réponse : Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 9 mars 2007 à 23:01
bonjour, tous le monde
j'ai un ptt probleme , je programme avec delphi7 , et je veux que mes form
s'adaptent avec les types d'affichage 800*600, 1024*,......

merci d'avance
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
Salut,

la réponse est toute simple pas besoin de se prendre la tête avec les Anchors:

ChangeScale ou ScaleBy

L'avantage de ces méthodes c'est qu'elles se charge de redimensionner les composants :

Ex: je crée une forme en 800*600 .. avec ses composants (TEdit, TLabel, TButton ... etc)

et pour la passer de 800*600 vers 1280*1024 tout en gardant les proportions je fais:
(1280 / 800) * 100 = 160

ChangeScale(160, 100); // et voilà c'est fait

et en sens inverse : de 1280*1024 vers 800*600 :
(800 / 1280) * 100 = 62,5

ChangeScale(62, 100); // c'est magique

N'oublie pas de consulter l'aide de Delphi sous ScaleBy et ChangeScale

 
@+
Cirec

<hr size ="2" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Cirec
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
3
Merci
Salut Cirec,

A mon avis il est préférable (si l'on garde les mêmes proportions 800*600 et 1280*1024) de faire :

ChangeScale(1280, 800);
ChangeScale(800, 1280);

Les calculs sont simplifiés   et l'on ne perd pas 0.5 à chaque fois qu'on revient à la dimension d'origine (il suffit de mettre 100 changements d'échelle dans une boucle pour voir la déperdition) :

for i := 0 to 99 do
begin
  ChangeScale(160, 100);
  ChangeScale(62, 100); 
  Application.ProcessMessages;
end;

Bon, tu me diras, on va pas forcément redimensionner la fiche 100 fois...

a +

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de japee
Messages postés
424
Date d'inscription
mardi 3 janvier 2006
Dernière intervention
26 novembre 2013
0
Merci
Salut.

Pour connaitre la résolution de l'écran, utilise la variable Screen (prédéclarée par Delphi de type TScreen). Regarde l'aide delphi sur TScreen et tu verras notamment :

Screen.Width : renvoie la largeur totale en pixels de l'écran
Screen.Height : hauteur totale
Screen.WorkAreaHeight : hauteur totale - la hauteur de la barre des tâches.
...

Connaissant cela, tu peux facilement dans l'événement OnCreate de ta fiche adapter la taille de ta fenêtre.
Si tu veux garder les proportions exactes de ta fenêtre originale, tu dois jouer avec le ratio width/height.
Mais changer la taille d'une fenêtre impose que tu règles parfaitement pour tous les composants leur propriété Anchors. Un exemple : si tu as un Bouton au bas de ta form, Anchors doit être : [akLeft, akBottom]. Si tu laisses akTop: avec akBottom en plus, la hauteur de ton bouton va augmenter si tu augmentes la hauteur de ta fenêtre; sans akBottom, ton bouton risque de se retrouver au milieu de ta fenêtre !

A +
Thierry
Commenter la réponse de ThWilliam
Messages postés
103
Date d'inscription
mardi 11 avril 2006
Dernière intervention
4 mars 2009
0
Merci
Voici également un message très intéressant avec en particulier la liste des résolutions fournie par f0xi ...
Commenter la réponse de sylvunix
Messages postés
103
Date d'inscription
mardi 11 avril 2006
Dernière intervention
4 mars 2009
0
Merci
Avec le lien, c'est nettement mieux !

http://www.delphifr.com/infomsg_CONNAITRE-TAILLE-ECRAN_869487.aspx#7
Commenter la réponse de sylvunix
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
pas besoin de se fatiguer à calculer le rapport ... il suffit de mettre ChangeScale( NewWidth, CurrentWidth)
j'y avais même pas pensé

et l'exemple que tu donne est sans appel ... c'est justement à cause des pertes que je lui recommandait de lire l'aide de Delphi

Mais en appliquant ton principe et pour peu que l'on conserve des proportions paires il n'y a plus ce genre de désagréments

C'est l'exemple type qui tue ... c'est tout con ... encore fallait il y penser
Bravo
 
@+
Cirec

Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.