Taille scrollbar

Résolu
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 27 juin 2006 à 10:52
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 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

FGrille.ColWidths[1] := FGrille.Width - FGrille.ColWidths[0] - 25;

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.

Merci de votre aide

4 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
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.
  
A +
Thierry
3
Utilisateur anonyme
27 juin 2006 à 15:54
Salut,

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.

A+
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
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.

en tout cas merci beaucoup :)
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
28 juin 2006 à 12:43
Salut Guillemouze,

Dans un DrawGrid : GridLineWidth n'est pas contenu dans ColWidths (Delphi 7).
Pour un  TAdvStringGrid, je ne sais pas, je n'ai pas ce composant. 

A +
Thierry
0
Rejoignez-nous