Ajustement de la largeur des colonnes d'une dbgrid

Soyez le premier à donner votre avis sur cette source.

Vue 7 787 fois - Téléchargée 1 951 fois

Description

Bonjour,

Voici 2 fonction pour ajuster la taille des colonnes d'une dbgrid, en fonction de l'espace disponible dans la dbgrid.

procedure AjusteChampGrid ( gr :TDBGrid; chp :string )
Cette procedure ne s'occupe que d'un seul champ, et l'étend sur tout l'espace non occupé par les autres champs visibles

procedure AjusteChampGrid ( gr :TDBGrid; chps :array of string )
Traite un tableau des champs a redimensionner.
Le tableau peut contenir les éléments suivants:

nom_du_champ=xx : La largeur du champ est fixée a xx

nom_du_champ=xx% : La largeur du champ est fixée a xx% de l'espace non occupé par les autres champs visibles, après redimensionnement des champs a valeur fixe ( =xx )

nom_du_champ : L'espace non occupé par les autres champs visibles est divisé entre les champs passée sans attributs ( sans =xx ou =xx% )

Cette démo a été faite avec Lazarus sous Fedora 17, en utilisant les composants standards d'accès au données ( SQLite3Connection, SQLTransaction, SQLQuery & Datasource ).

La base demo.sqlite est fournie, l'accès a la base est réinitialisé dans le FormCreate, donc on peut facilement changer les composants d'accès, en modifiant le FormCreate.

J'ai mis dans l'évènement DBGrid1TitleClick la fonctions d'ajustement du champ courant ( si l'espace le permet )

Le code est commenté dans les grandes lignes, et une petite doc est fournie

N'hésitez pas a me dire ce que vous en pensez

Philippe

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
c'est une idée, mais comme toutes les idées
elles demandent à être étudiées, triturées..etc
mais on n'en débattra pas ici,
ce n'est pas le lieu..
peut-être dans le bar
Messages postés
16
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
15 septembre 2015

Bonsoir Cantador,

Bien sur, l’intérêt est limité, mais c'est ma première source, et je voulais aussi présenter une façon de redimensionner différente de ce que j'avais vu ici ( enfin, il me semble ).
Je pense qu'ajuster sur un pourcentage peut servir a l'affichage, sur un OnResize, par exemple...

En ce qui concerne
"Un peu dans le même esprit, je te propose d'étudier un projet qui permettrait d'effectuer un zoom sur l'ensemble des composants d'une fiche tout en intégrant les dimensions de l'écran du PC et sa résolution."
Peux-tu m'en dire plus ( ça me semble assez obscur... )

Cordialement

Philippe
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
ok, mais toujours pas convaincu de l'intérêt d'ajuster
sur une valeur ou au pourcentage..
je te propose de terminer sur cette modification et de travailler sur
autre chose

Un peu dans le même esprit, je te propose d'étudier un projet qui permettrait d'effectuer un zoom sur l'ensemble des composants d'une fiche tout en intégrant les dimensions de l'écran du PC et sa résolution.
Messages postés
16
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
15 septembre 2015

Bonjour Cantador,

Le comportement des 3 boutons n'a pas changé, ils ne tiennent pas compte du contenu des champs, ceci n'est actif que dans le AfterScroll.

Pour l'ascenseur vertical, je pense que tu parles du défilement par la molette.
Effectivement, sous Delphi 7, la molette déplace uniquement le visuel, mas pas l'enregistrement, donc rien ne se passait.
La DBGrid n'ayant pas pas d’évènement OnMouseWheel, j'ai ajouté dans le OnCreate de la Form :
TForm ( DBGrid1 ).OnMouseWheel := dbgridMouseWheel;
La procédure dbgridMouseWheel se charge de faire le Prior/Next

A bientôt

Philippe
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
légère amélioration..
mais les soucis demeurent :
lors du clic sur le premier bouton, la colonne test_text2 est ajustée mais la test_text1 ne l'est pas..
sur le clic du bouton 2, la colonne test_text2 n'est pas ajustée et du reste l'ascenseur vertical n'est pas pris en compte..
Le troisième bouton est ok.
Afficher les 18 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.