AJUSTEMENT DE LA LARGEUR DES COLONNES D'UNE DBGRID

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 19 mars 2013 à 17:26
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 27 mars 2013 à 11:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/55038-ajustement-de-la-largeur-des-colonnes-d-une-dbgrid

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
27 mars 2013 à 11:59
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
pbazin47 Messages postés 16 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 15 septembre 2015
26 mars 2013 à 19:30
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
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
26 mars 2013 à 15:15
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.
pbazin47 Messages postés 16 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 15 septembre 2015
26 mars 2013 à 13:00
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
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 mars 2013 à 09:34
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.
pbazin47 Messages postés 16 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 15 septembre 2015
22 mars 2013 à 18:39
Bonjour Cantador & Mauricio,

@Mauricio
Je pense que l'idée est très bonne, je viens de refaire l'exemple dans ce sens.
Je vais aller voir tes composants dès que possible.
Je souhaite aussi voir venir ici des développeurs Lazarus et Turbo Pascal... On parle le même langage :)

@Cantador
Je te crois pour AutoColumWidth , mais je n'en dispose pas ( mais je ne doute pas de son efficacité ), c'est pourquoi j'ai fait ce code, qui ne cherche pas du tout a adapter la largeur en fonction des données ( des sources existent déjà pour ça ), mais de les fixer en dur ou en pourcentage.
Une nouvelle démo est en ligne, réagissant en fonction du contenu, et du Form Onresize ( C'est codé, mais ça a l'air de marcher )

Je reste a l'écoute pour toute réaction

Philippe
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
22 mars 2013 à 12:38
"dès l'instant pour ma part où les sources déposées proposent une version sous Delphi compilable"
On touche du doigt le probleme. Il faudrait séparer le code source "utilitaire/composant" pur pascal(qui sera compilable sur tous les IDEs) des unités de type "form" qui l' exploite.

Quelques chose comme ça:

- repertoire "Pascal" (avec les unités multi IDEs)
- repertoire "Delphi" (avec le projet Delphi qui exploite ce qui a dans le répertoire "Pascal")
- repertoire "Lazarus" (avec le projet Lazarus qui exploite ce qui a dans le répertoire "Pascal")

a+
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
22 mars 2013 à 12:21
@pbazin47:
la propriété AutoColumWidth était mentionnée pour illustrer une VRAIE optimisation de la largeur des colonnes, ce que ne fait justement pas ta fonctionnalité proposée.
AutoColumnWidth ajuste dans un premier temps la largeur en fonction de la taille prévue du champ de la table de la base de données et si on bouge manuellement une largeur d'une colonne, alors, cette option reconstruit le grid de manière à ce qu'aucun texte ne soit caché, au besoin en passant les titres ainsi que les données sur plusieurs niveaux.
c'est très puissant !

Pas de soucis pour accueillir les programmeurs sous Lazarus ou Turbo Pascal
dès l'instant pour ma part où les sources déposées proposent une version sous Delphi compilable.
où alors, il faut créer une rubrique spécifique pour ces deux domaines..
mais après tout pourquoi ne pas en discuter ?
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 mars 2013 à 18:51
"les développeurs lazarus & Turbo Pascal ont leur place ici aussi"
Et tu seras le bien venu!

J' ai moi même des compos gratuits qui fonctionnent sous Delphi :
https://sourceforge.net/projects/tcycomponents/
mais des passionnés les ont portés sous Lazarus :
http://www.pilotlogic.com/sitejoom/index.php/forum/general-purpose/1077-lab-cindy-components#1077

J' ai pas le temps, le courage ni les cométences de les rendre compatibles Lazarus pour l' instant.
Je vais déjà faire en sorte qu' ils puissent compiler pour la plateforme Windows 64 bits puis, pour certains compos, les convertir pour firemonkey.

A+
pbazin47 Messages postés 16 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 15 septembre 2015
21 mars 2013 à 18:41
Bonjour Cantador & Mauricio,

Cantador :
Je sais que ce code n'a pas grand intérêt, mais sous delphi 7, je n'ai pas ColumnAutoWidth, et sous Lazarus, j'ai AutoFillColumns, qui fixe toutes les largeurs des champs sur la même taille ( ce que je n'aime pas ).
Les Begin...End; J'aime bien, et je les place dès que possible, je ne sais jamais ce que je vais rajouter ensuite...
La procédure qui repasse toutes les champs a une largeur de 75 est juste pour la démo, afin de libérer de l'espace sur la DBGrid, et n'est pas a utiliser autrement.
Pour ce qui est de la sauvegarde la configuration, ce n'était pas le but, c'est une fonction que j'utilise principalement dans un OnResize de la Form.

Merci pour ta note, et je reste a l'écoute pour ce code et les prochains...


Mauricio :

Bonjour,
Je suis d'accord avec toi, les développeurs lazarus & Turbo Pascal ont leur place ici aussi.

Je vais continuer a faire des sources Delphi 7 & Lazarus, si ça peut aider, ( je n'ai pas TP ).

A très bientôt

Philippe
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
21 mars 2013 à 15:41
merci également de joindre les deux dll
SqlLite.dll et SqlLite3.dll à placer dans windows/system32
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
21 mars 2013 à 15:39
sur la forme :

code bien écrit (unité de procédures et de fonctions, surcharge, paramétrages, commentaires etc..)
Les instructions begin end peuvent toutefois être supprimées dès l'instant où une seule instruction est codée.

sur le fond ;

En revanche, l'ajustement petit codé en dur ne peut constituer une réelle optimisation de la largeur des colonnes (sorte de ColumnAutoWidth.)
de mêmes les autres fonctionnalités présentent un intérêt limité.

Par ailleurs, aucune sauvegarde de la configuration retenue n'est réalisée.
tout est donc volatile.

Compte tenu, du soin apporté à cette publication du reste accompagnée d'une documentation HTML, et de ta bonne volonté, je propose de conserver ce code qui montre néanmoins quelques aspects de programmation utiles aux débutants.

Gageons, qu'avec un tel potentiel, tu devras pouvoir nous montrer autre chose de plus pétillant !
7/10
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
21 mars 2013 à 11:38
On a aujourd' hui plusieurs IDE du langage pascal (Delphi, Lazarus, Turbo Pascal) qui devraient pouvoir compiler le même code.
Lazarus s' est détaché jusqu' ici par le fait qu' il pouvait faire du multi plateformes mais il s' est fait rattrapé par Delphi.
Du coup, on a l' opportunité de pouvoir utiliser les mêmes unités sur plusieurs IDE et sur plusieurs plateformes.

A nous maintenant de tenir compte de ça afin de faciliter par exemple des compos multi-plateformes et/ou multi-IDE pour notre propre bien.
Je serai donc content de voir débarquer les programmeurs Lazarus sur notre site.

a+
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
20 mars 2013 à 22:33
bonne initiative pbazin47
Nous allons pouvoir regarder ton code..
pbazin47 Messages postés 16 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 15 septembre 2015
20 mars 2013 à 18:17
Bonjour Cantador,
En effet, le code doit pouvoir être utilisé par tous, et rapidement.
J'ai donc réinstallé Delphi 7 ( qui tourne sous Linux & emulateur windows ), et refait l'exemple.
J'ai utilisé les composants Zeos 7 ( disponibles sur http://sourceforge.net/projects/zeoslib/files/Zeos%20Database%20Objects/zeosdbo-7.0.3-stable/ ) pour accéder a la base SQLite, n'ayant pas trouvé comment faire avec dbExpress...
J'ai remis les 2 versions ( Delphi 7 & Lazarus ) dans le zip pour que chacun y trouve son compte.

Merci pour tes conseils, j'en ai pris bonne note

Cordialement

Philippe
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 mars 2013 à 23:08
ton source s'adresse à des débutants en delphi..
il est nécessaire que le code soit compilable d'entrée.
moi-même, je ne ferais pas la conversion d'autant que les fontionnalités que tu proposes sont déjà
opérationnelles dans d'autres packs (TcyGrid free de Mauricio, TcxGrid, TwwwDbGrid etc..)

Donc, nous restons dans l'attente de ta modification.
pbazin47 Messages postés 16 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 15 septembre 2015
19 mars 2013 à 18:39
Bonsoir Cantador,
Oui, je me doute que Lazarus/Linux peut poser problème...
Je n'ai plus Delphi, donc j'utilise Lazarus ( son pauvre clône, si j'ose dire ), le code est du pur Pascal, c'est pourquoi je poste les procédures dans une unité séparée, il suffit ainsi de la rattacher a un projet.
Le problème peut venir, dans ce cas, des composants d'accès a la BDD, je l'ai indiqué dans la présentation, le reste, il me semble, est tout a fait compatible. ( dans cet exemple, le code n'agit que sur une dbgrid, donc il ne devrait pas poser de problème ).

Je vais voir si je peux trouver un ordi avec Delphi avant de poster autre chose.

Cordialement

Philippe
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 mars 2013 à 17:26
désolé, il y a peu d'utilisateurs sous Lazarus et Linux..
tu n'auras donc pas beaucoup de commentaires.
Ici, il faut déposer une source fonctionnant sous delphi
en précisant sa version de développement.

Toutefois, on va attendre que tu fasses la conversion et ces procédures pourront alors alimenter les codes SNIPPETS si toutefois, aucun bug n'apparait.

d'accord ?