Réponse acceptée !
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