Grid avec propriétés d'affichage et d'édition

Soyez le premier à donner votre avis sur cette source.

Vue 9 034 fois - Téléchargée 1 461 fois

Description

TThGrid est un composant dérivé de TCutomGrid.
C'est un grid orienté strings proposant, par colonne, des propriétés d'affichage et d'édtion.
Entre autres :
- affichage du texte de cellule "façon Memo" avec calcul automatique de la hauteur de ligne du grid.
- couleur de colonne avec dégradé.
- alignement horizontal et vertical du texte.
- contrôle interne d'édition selon le type de données choisi(date, numérique...).
- paramétrage d'édition : nb max de caractères, Charcase.
- fonction d'affichage de bitmap à l'échelle de la cellule.

TThGrid ne mémorise pas les données de cellules. Il faut lui fournir les données à afficher et à éditer à partir d'un "container de données" qui peut être un simple array 2D.
Un peu de pub : avec mon composant récemment déposé 'TRecordsList', il faut < 10 lignes de code pour rendre le grid opérationnel. En plus, on profite de ses procédures de tri sur plusieurs clés et de sauvegarde dans fichier. C'est un jeu d'enfant d'insérer des lignes ou d'en supprimer (<> TStringGrid). La démo l'utilise. [fin de la pub].

Pour la démo:
- pas besoin d'installer le composant
- l'unité de TRecordsList est fournie dans le zip

Merci d'avance pour vos remarques ou questions.

Conclusion :


Vous regretterez peut-être la "non mémorisation des données". Mais d'un autre côté, cela présente de gros avantages. Et puis, vous pouvez assez facilement dériver votre propre composant. Perso, j'aime les composants "ouverts". Pas vous ?

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

ThWilliam
Messages postés
424
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
2 -
Salut Papyvore.

Si, dans thgrids.pas, tu regardes la procedure TTHBasicGrid.MouseUp, tu verras que l'événement OnCellClick n'est appelé que si on a cliqué sur une cellule de données : if GC.Y >= FixedRows then...
Il est donc très simple d'ajouter un événement "OnHeaderCellClick" si GC.Y < FixedRows.
MAIS : si les options du grid permettent le resize ou le déplacement de colonne, l'événement sera également appelé après ces opérations !
Le plus simple à coder serait de n'appeler l'événement que sur un clic droit.

Désolé de ne pas être plus complet, mais là, je n'ai pas trop le temps.
Thierry
papyvore
Messages postés
177
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
19 novembre 2019
4 -
bonjour
peut on ajouter un click sur Header columns pour utiliser le tri
par exemple ??
comment ??
merci
ThWilliam
Messages postés
424
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
2 -
Salut Delphiprog.

La colonne Float du grid est de type ctFloat.
Dans la procedure GridDrawDataCell, il y a conversion de valeur pour affichage avec séparateurs (voir ligne 305 de Mainfrm.pas). Cette conversion est entourée de try... except. Cela ne pose pas de problèmes, sauf si, chez toi, dans les options du débogueur, est coché "Arrêter sur exceptions Delphi". Dans ce cas, il y a notification d'exception, c'est normal.

A +
Thierry
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
Je me suis dit : super travail.
J'ai donc voulu voir à quoi ça ressemblait en fonctionnement et patatras, sous Delphi 7, au lancement de l'application :

---------------------------
Notification d'une exception du débogueur
---------------------------
Le projet DemoTThGrid.exe a provoqué une classe d'exception EConvertError avec le message ''' n'est pas une valeur en virgule flottante correcte'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
---------------------------
OK Aide
---------------------------

sur la ligne 916 de l'unité thgrids.pas :
if AValue <> '' then
DrawCellValue(AValue, ACol, ARow, ARect, AState);

What's wrong ?
ThWilliam
Messages postés
424
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
2 -
@Tigris1 et Florent : grand merci à vous deux.

@Florent : je vois avec plaisir que nous sommes d'accord sur la non-mémorisation.

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.