Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
27 juin 2006 à 10:52
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 2013
-
28 juin 2006 à 12:43
Salut tout le monde,
je voudrais savoir si il est possible de connaitre la taille en pixels d'une scrollbar.
J'ai un drawGrid avec la porpriete align=alClient, et je voudrais resimensionner ma derniere colonne pour qu'elle prenne le reste de la largeur de la grid.
j'ai donc
j'ai mis 25 pour la largeur de la scrollbar, mais je sais pas si selon les parametres windows, cette taille peut changer, et je voudrais qu'elle s'adapte en fonction de ces preferences.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 27 juin 2006 à 20:33
Salut,
Pour adapter parfaitement ta dernière colonne, utilise la propriété ClientWidth : elle te donne la largeur utile pour la grille (qui variera si une scrollbar verticale est visible ou non).
with FGrille do
ColWidths[1]:= ClientWidth - ColWidths[0] - GridLineWidth;
Ceci marche pour 2 colonnes, mais imagine que tu en aies 20 !
D'où je préfère ceci :
with FGrille do
begin
R:= CellRect(ColCount-1, 0); // coordonnées de la dernière colonne dans un TRect
if (R.Right + GridLineWidth) <> ClientWidth then
ColWidths[ColCount-1]:= ClientWidth - R.Left;
end;
Il faudra rappeler ce code pour redimensionner la colonne :
- si tu change la taille de ta Form (puisque Align = alClient) : facile à faire dans un événement OnResize
- si le nb de Rows est modifié (scrollbar verticale visible ou non).
- si tu change la taille de la première colonne
Plus compliqué que ton code, mais ta dernière colonne sera toujours impeccablement ajustée.
Petite remarque : tu ne joues pas sur la taille de ta scroolbar mais sur la largeur de ta colonne. Ce sont deux choses différentes et indépendantes.
Si tu veux savoir ce qui va changer selon les parametres de windows : rien ne t'empeche de faire le test sur ton PC. Tu changes la résolution de l'écran et tu regardes ce que cela fait.
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 28 juin 2006 à 10:11
merci Thierry, c exactement ce qu'il me fallai et en plus, c'est res clair.
Il me manquai juste la propriete clientWidth.
petite remarque : il ne faut pas enlever gridlinewidth, qui est contenue dans la taille de la colonne. (j'utilise une TAdvStringGrid (composant TMS) mais je pense que c'est la meme chose pour une drawGrid.