Dbgrid avec tri sur clic, molette et couleurs

Soyez le premier à donner votre avis sur cette source.

Vue 17 655 fois - Téléchargée 4 539 fois

Description

Sorti du vb et du php je me suis mis il y a peu à delphi 7 que je trouve le meilleur de tous ceux que j'ai testés en programmation surtout grace à la richesse de la VCL et au controle qu'il donne sur le code.
J'ai rapidement voulu tenter la création de composants à réutiliser à n'importe quelle occasion. (réutilisables, donc)
Je me suis attaqué à l'amélioration du DBGrid pour un usage plus confortable dans des projets.
Cette amélioration du tdbgrid comprend:
-la colorisation des lignes,
-la gestion de la molette,
-le tri des colonnes sur le adodataset client par clic sur la grille (si on l'utilise avec un adoquery ou adodataset)
Ces trois aspects sont décrits séparéments sur différents sites (dont codes-sources pour les couleurs, developpez pour le tri, et de la doc perso pour la gestion du message windows de la molette) mais je n'avais pas encore vu les trois fonctionnalités réunies.
Je cherchais à faire une fonction de tri en evitant le réenvoi de requetes sql et en utilisant les methodes ado disponibles, et je n'en avais pas trouvé ici. En voici donc une. La source est simple, mais m'a demandé du temps en lecture et recherches.
Cette source me semble propre mais je me trompe peut-etre et toute critique est bonne pour progresser

Conclusion :


ce persodbgrid ne fait pas tout ce que je voudrais (il y a du boulot de documentation):
-pas de tri sur des jointures externes left (ou right) join si il n'a pas d'enregistrement sur une des tables de la jointure (index null peut-etre??)
-pas de recherche par zone de texte au dessus des colonnes (est-ce seulement possible dans un composant?)
-ce dbgrid a un nom qui ne convient pas à la postérité, normal.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
19 mai 2008

bonjour,
je suis un debiten, ca marche avec le base Paradox ?
Messages postés
8
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
18 août 2007

Bonjour,

Genial ton code !
surtout pour les tri sur les colonnes, ça fait un moment que je cherchais comment le faire et finalement c'est simple :-)

merci !
Messages postés
19
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
4 août 2010

Je me réponds apres avoir cherché dans quelques forums et suivi quelques mauvaises pistes:
sur le oncreate du composant TPERSODBGRid j'instancie un TEDIT:
eTests :=TEDit.Create(self)
Et j'enchaine aussitôt avec eTests.Parent:=self;
et là le TEdit est géré par son papa le TPersoDBGrid (propriété "visible:=True" possible alors que non si je ne faisais pas celà).
Merci de m'avoir guidé, même sur une fausse piste, ça permet de pousser le bouchon en étant confiant(je n'aurais pas testé ça sinon)
Un nouvelle version de la TPersoDBGRid pour bientôt?...
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Pose ta question sur le forum tu auras bien plus de chance d'avoir la bonne réponse à ta question, je me suis pour l'instant jamais penché sur ce genre de création. Désolé #^_^#

@+
Cirec
Messages postés
19
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
4 août 2010

En fait la source que tu m'indiques n'est pas celle d'un composant, et la gestion du owner n'est pas à faire. C'est bien cela qui m'est difficile: sur quel evenement, par quel détour je dois instancier puis faire réagir mon TEdit inclus dans le PersoDBGrid (en remontant par le owner ou directement avec le PersoDBGrid)??
Afficher les 9 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.