Dbgrid avec zone de recherche,tri,fleches,memos,molette,couleurs

Description

Voici une évolution du PersoDBgrid Posté précédemment.

Ce composant dérivé de TDBGrid réunit un certain nombre de fonctionnalités pour lesquelles des questions sont souvent posées.

points implémentés par ce code:
  • gestion des touches clavier par transmission de messages entre un DBGrid et un TEDIT
  • programmation de DrawcolumnCell pour gerer l'option dgRowSelect ou non avec de multiples sous-cas pour eviter le rappel de fonctions graphiques (scintillement)
  • regroupement de multiples fonctionnalités graphique trouvées par-ci par là et rassemblées ici

-molette
-fleche dans les entetes (http://www.delphifr.com/forum.v2.aspx?ID=326580)
-coloration des lignes (http://www.delphifr.com/code.aspx?id=31920)
  • affichage et export csv des champs memos(http://delphi.about.com) mais pas de mise à jour base
  • gestion des évènements graphiques assez complète mais difficile à suivre sur le code (des "flags" nombreux désolé).


------------------------------------------------------------------------------------------------

bugs et améliorations possibles non étudiés faute de temps ou de maitrise:
  • gestion du tri et de la recherche sur des champs memo non faite (cela at'il toujours un sens selon la taille des données memos.
  • la méthode de tri ne fonctionne qu'avec ado il faudrait une traitement alternatif pour des technologies moins magiques.
  • pas de gestion des selections en cours(bookmarks).
  • Dpuis la mise à jour, un evenement OnPersoEditKeyPress sur le message wmchar pour que chacun gére ses particularités lors de la saisie de chaines dans le sous composant TEdit.
  • il existe un bug ou un truc que je ne comprend pas lors du onColumnMoved : deux colonnes de même type ne s'echangent pas, sauf leur entete.


Tout n'est pas testé, pas le temps. Mais je compte sur vos commentaires pour compléter ma TODO list.

Conclusion :


pour le tester sous delphi7: ouvrir le groupe de projets, voir, gestionnaire de projets, clic-droit sur le paquet perso.dpk, et installer
Il se trouvera dans la palette CodesSources
Activer le projet principal projet1 (il doit etre en gras), executer.

premier clic sur une entete -> couleur active
second clic -> la zone de recherche s'affiche (si on garde withSearchEdit à true)
troisieme clic sur la zone de l'entete laissée libre ->tri (ne fonctionne qu'avec ADO, il faudrait implementer un traitement 'universel' par défaut pour d'autres cas. En attendant, si on assigne le gestionnaire OnTitleClick c'est celui-ci qui s'execute exclusivement.Je ne me suis pas penché sur le tri de query avec jointures externes qui plantent

Gestionnaire d'evenement OnPersoEditKeyPress pour la saisie dans la zone de recherche et mise à disposition de méthodes pour acceder aux seules propriétés nécessaires du TEDit resté privé par "sécurité" (PersoGrille.getPersoEditText par ex.)

Clic droit sur la grille -> un popupmenu avec export CSV permet le lancement d'un thread (unité séparée d'apres conseil de delphi_prog à valkyrie (http://www.delphifr.com/forum.v2.aspx?id=313802)
lors de l'export pour ouverture sereine dans excel:remplacement des ; par des ., des tabulations par un espace et des retour chariot par |
Les memos sont exportés aussi (pas de test de limite de taille)

je me suis bien creusé la tête pour qu'il soit relativement fonctionnel et j'espère que vous me ferez part de vos remarques maintenant que j'ai tout bien expliqué.

Codes Sources

A voir également

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.