Résoltion

Résolu
cs_younesken1 Messages postés 39 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 23 mars 2011 - 11 mars 2006 à 10:51
cs_younesken1 Messages postés 39 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 23 mars 2011 - 11 mars 2006 à 13:21
j'ai développez mon application ds le mode 1152x864,
et, elle est trés charger en composant visuelle.
le problème et que dés que je passe à une autre résolution plus basse (800x600), alors l'interface n'est plus vraiment utilisabe.
y'a t'il pas moyen de redimmenssioner les composant visuel automatiquement selon la résolution.merci beaucoup.

8 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
11 mars 2006 à 11:14
Salut,

Extrait de l'aide de Delphi :

procedure ChangeScale(M, D: Integer); override;


Description


La méthode ChangeScale permet de changer l'échelle d'une fiche et de tous ses contrôles pour une résolution d'écran ou une taille de fonte différente. Comme ChangeScale modifie les propriétés Top, Left, Width et Height du contrôle, elle change sa position et sa taille ainsi que celles de ses enfants.


Les paramètres M et D définissent une fraction servant à changer l'échelle du contrôle. Le paramètre M est le multiplicateur et D le diviseur. Par exemple, pour réduire un contrôle à 75% de sa taille initiale, spécifiez les valeurs 75 pour M et 100 pour D (75/100). Le même résultat est obtenu en spécifiant la valeur 3 pour M et 4 pour D (3/4). Les deux fractions sont égales et le contrôle est réduit du même pourcentage, 75%.


Pour agrandir le contrôle à 33% de plus que sa taille initiale, spécifiez les valeurs 133 pour M et 100 pour D (133/100). Le même résultat est obtenu en spécifiant les valeurs 4 pour M et 3 pour D (4/3).


Remarque : Comme la taille des contrôles et leurs coordonnées sont des valeurs entières, la mise à l'échelle en utilisant le ratio M/D entraîne un certain niveau d'erreur d'arrondi. L'appel répété de ChangeScale peut provoquer à un certain moment la disparition du contrôle (si les erreurs d'arrondi rendent le contrôle trop petit), ou faire sortir le contrôle de la fiche (si les erreurs d'arrondi déplacent le contrôle). Si vous mettez fréquemment un contrôle à l'échelle, envisagez de détruire et de recharger la fiche au bout de quelques mises à l'échelle, afin que les coordonnées soient remises à l'échelle en évitant l'accumulation des arrondis.

Donc pour reduire les composants de 25% il faut écrire :
ChangeScale(75, 100);

@+
Cirec
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
11 mars 2006 à 11:20
salut,

on peut toujours redimensionner les composants avec les porpriétés width et heigth mais c'est trés lourd

si tu as indicé tes composants tu peux faire des boucles en utilisant findcomponent

par exemple pour un label

for i:= 0 to XXX do

with TLabel(FindComponent('Label' + IntToStr(i))) do // on recherche les éléments à afficher

begin

width: =(width*nouveau) div ancien;

height:=(height*nouveau) div ancien;

end;



Mais de toutes façon cela restera lourd



@+

jlen
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
11 mars 2006 à 11:42
excuse moi cirec je n'avais pas rafraichi.(aujourd'hui c'est moi!!)

mais j'ai au moins appris une chose aujourd'hui



@+

jlen
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
11 mars 2006 à 11:57
Content d'avoir su t'éclairer, j'en déduis donc que tu ne connais pas les deux autres procédures :
Il existe aussi ScaleBy et ScaleControls

ScaleBy est identique a ChangeScale
et
ScaleControls : Comme son nom l'indique il n'agit que sur les contrôles enfants

Voilà c'est tout

@+
Cirec
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
11 mars 2006 à 12:16
si je connais ---> enfin il y a 1/4 d'heure car j'ai été voir dans
l'aide les méthodes de Tcontrol encore que pour changescale l'aide de
D7 est moins complète!!



@+

jlen
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
11 mars 2006 à 12:24
Sous TControl les deux ont la même définition mais sous TCustomForm c'est un peut différent :

Repositionne et redimensionne la fiche par le ratio M/D et ajuste, si nécessaire, sa zone client et la taille de fonte.


procedure ChangeScale(M, D: Integer); override;


Description


La méthode ScaleBy appelle ChangeScale pour effectuer le changement d'échelle. TCustomForml surcharge ChangeScale pour remettre à l'échelle les contrôlesenfant et les barres de défilement avant de se remettre lui-même à l'échelle.

@+
Cirec
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
11 mars 2006 à 12:32
oui sous Tcontrol c'est la méthode native alors qu'elle est surchargée sous TcustomForm



@+

jlen
0
cs_younesken1 Messages postés 39 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 23 mars 2011
11 mars 2006 à 13:21
merci beaucoup Cirec.et a toi aussi jLen car méme si elle est lourde la procédure que tu ma proposé, mais j'ai commeme appris l'interet d'utilisation de nouveaux fonctions.
0
Rejoignez-nous