Taille scrollbar

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

Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
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

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+
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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 :)
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
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