Fentres dans delphi [Résolu]

benalioua1975 94 Messages postés samedi 31 décembre 2005Date d'inscription 26 juin 2013 Dernière intervention - 4 mars 2007 à 08:35 - Dernière réponse : Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention
- 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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 5 mars 2007 à 15:57
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" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 9 mars 2007 à 21:35
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 +

Merci japee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de japee
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 4 mars 2007 à 09:39
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
sylvunix 103 Messages postés mardi 11 avril 2006Date d'inscription 4 mars 2009 Dernière intervention - 5 mars 2007 à 07:46
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
sylvunix 103 Messages postés mardi 11 avril 2006Date d'inscription 4 mars 2009 Dernière intervention - 5 mars 2007 à 07:48
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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 9 mars 2007 à 23:01
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.