begin process at 2010 02 10 12:11:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

 > GRID AVEC PROPRIÉTÉS D'AFFICHAGE ET D'ÉDITION

GRID AVEC PROPRIÉTÉS D'AFFICHAGE ET D'ÉDITION


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Composants Classé sous :grid, stringgrid, drawgrid, grille Niveau :Initié Date de création :06/05/2008 Date de mise à jour :13/05/2008 16:10:17 Vu / téléchargé :5 190 / 715

Auteur : ThWilliam

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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 ?

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Columnsfrm.dfmTélécharger ce fichier [Réservé aux membres club]8 603 octets
  • Columnsfrm.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 224 octets
  • DemoRessources.RESTélécharger ce fichier [Réservé aux membres club]260 900 octets
  • DemoTThGrid.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier307 octets
  • DemoTThGrid.resTélécharger ce fichier [Réservé aux membres club]876 octets
  • Mainfrm.dfmTélécharger ce fichier [Réservé aux membres club]4 665 octets
  • Mainfrm.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier14 517 octets
  • RecList.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier21 941 octets
  • Test.thgTélécharger ce fichier [Réservé aux membres club]1 021 octets
  • ThGrids.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier43 956 octets
  • TRecordsList.rtfTélécharger ce fichier [Réservé aux membres club]8 302 octets
  • TThGrid.rtfTélécharger ce fichier [Réservé aux membres club]23 291 octets

Télécharger le zip


 Historique

13 mai 2008 16:10:18 :
Amélioration code d'affichage (dégradé...) Ajout propriété CanAfterSelect

 Sources du même auteur

Source avec Zip COMPOSANT TTHRESCOLLECTION
Source avec Zip COMPOSANT LISTE DE STRINGS AVEC CHAMPS
Source avec Zip SAUVEGARDER UN BITMAP EN JPEG AVEC DONNÉES EXIF ET VIGNETTE
Source avec Zip FILTRE DE NETTETÉ D'UN BITMAP
Source avec Zip TROIS COMPOSANTS EDIT

 Sources de la même categorie

Source avec Zip Source avec une capture TQGRID UN STRINGGRID AMÉLIORER. par yanb
Source avec Zip DYNAMIC LIBRARY LOADER CLASS: GAGNEZ DU TEMPS POUR CHARGER L... par f0xi
Source avec Zip Source avec une capture COMPOSANTS NDSOFT par diglas
Source avec Zip Source avec une capture GESTION DES "CRASHS D'APPLICATION" par Bacterius
Source avec Zip COMPOSANT TTHRESCOLLECTION par ThWilliam

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TQGRID UN STRINGGRID AMÉLIORER. par yanb
Source avec Zip Source avec une capture GESTION DE CASES À COCHER PERSONNALISÉES DANS UN STRINGGRID par Jean_Jean
Source avec Zip INTÉGRER UN TDBLOOKUPCOMBOBOX DANS TSTRINGGRID par lord948
Source avec Zip Source avec une capture STRINGGRID EXTENDED par dwmx5
Source avec Zip Source avec une capture MA PETITE COMBINE par cantador

Commentaires et avis

Commentaire de cirec le 06/05/2008 14:45:13 administrateur CS 10/10

je suis impressionné par le résultat

c'est vraiment très bien bravo

pour le code j'ai pas regardé (pas trop de temps en ce moment)

mais le résultat est bluffant.

rien que pour ça je te félicite

Continue comme ça ;)

Commentaire de f0xi le 06/05/2008 15:26:14 administrateur CS

tite amelioration pour les perf du paint :


procedure ClampPixCol(const iA,iB,iC:integer; var bA,bB,bC: byte);
begin
  if (iA and $80000000) = $80000000 then  bA := 0   else
  if (iA and $0FFFFF00) <> $00000000 then bA := 255 else
                                          bA := byte(iA);
  if (iB and $80000000) = $80000000 then  bB := 0   else
  if (iB and $0FFFFF00) <> $00000000 then bB := 255 else
                                          bB := byte(iB);
  if (iC and $80000000) = $80000000 then  bC := 0   else
  if (iC and $0FFFFF00) <> $00000000 then bC := 255 else
                                          bC := byte(iC);
end;

>>>>>> +35% de performances.



type
  TPixel32Color = (_R =0, _G=1, _B=2, _A=3);
  TPixel32 = array[TPixel32Color] of byte;

et au lieu des nombreux appels a Get?Value a la noix fait ceci :

var Pixel: TPixel32;
    Color: TColor;
...
  Pixel := TPixel32(Color);
  (traitement)
  ClampPixCol(cR,cG,cB, Pixel[_r], pixel[_g], pixel[_b]);
  Color := TColor(Pixel);


>>>>>> +90% de performances.


le mieux etant de travailler en 32bit avec pour le scan :

TScanLine = array[0..n] of TPixel;

vus le gain de performance on sera toujours mieux qu'en 24bits.


sinon tout le reste semble vraiment nickel.
j'essayerais de tester le compo quand j'aurais le temps :)

Commentaire de MAURICIO le 06/05/2008 18:20:01

Bien pratique lorsque l' on ne peut utiliser autre chose qu' un TStringGrid.
Impecc'
A+

Commentaire de ThWilliam le 06/05/2008 20:59:25

@Cirec et Mauricio : merci à vous deux pour votre appréciation.

@F0xi : merci pour tes conseils. Mais j'ai testé ta façon de faire, et je n'ai aucun gain de temps (dans le cas présent du dessin en dégradé, je précise). Par contre, je répète inutilement des calculs de couleur, alors qu'il suffirait de le faire une fois pour toutes pour la largeur ou la hauteur du bitmap. Et là j'ai un fameux gain de temps. Je ferai la modif pour la prochaine mise à jour.

A +
Thierry

Commentaire de cirec le 06/05/2008 22:22:56 administrateur CS

pour les dégradés regarde ça:
http://www.delphifr.com/codes/DEGRADE-PLUSIEURS-COULEURS-API-WINDOWS_35784.aspx

c'est plus rapide et tu n'est pas limité à deux couleurs ^^

Commentaire de tigris1 le 08/05/2008 15:42:19

Très joli travail, aussi bien du côté visuel que de la programmtion et de la documentation. Il y pas de chose à prendre. Merci et bravo.
Tigris

Commentaire de tigris1 le 08/05/2008 15:44:48

Pardon, j'ai écrit trop vite, et le commentaire n'est pas correct (la cause à mon touchpad), je reprends:

Très joli travail, aussi bien du côté visuel que de la programmation. Il y a beaucoup de choses à prendre. Merci et bravo.
Tigris

Commentaire de ThWilliam le 08/05/2008 19:07:18

@Tigris1 et Florent : grand merci à vous deux.

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

Commentaire de Delphiprog le 10/05/2008 17:59:37 administrateur CS

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 ?

Commentaire de ThWilliam le 10/05/2008 20:10:28

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

Commentaire de papyvore le 26/06/2008 10:47:07

bonjour
peut on ajouter un click sur Header columns pour utiliser le tri
par exemple ??
comment ??
merci

Commentaire de ThWilliam le 27/06/2008 11:45:42

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

cellule d'un stringgrid ou drawgrid qui disparaît [ par vdl_jeremie ] Bonjour, je vous expose mon problème. Si je diminuer la fenêtre de l'exécutable ou que j'ouvre une autre fenêtre devant, les cellules que j'avais c DrawGrid ou StringGrid [ par margout ] Boujours à tousJ'ai placé une matrice de single dans un StringGrid 90000 ligne.J'emploie donc avec abondance la fonction FloatToStr...n'ai=urais je pa Comment mettre un label en premier plan devant un grid [ par vieuxpere ] Bonjour,Mon soucis est que j'ai besoin de placer un label devant un stringgrid le proble c'est que même si je met avant plan pour le label et arriere StringGrid Sélection [ par Lamarmottedu73 ] Salut tout le monde, voilà je suis face à un mur !!! J'ai une StringGrid et j'ajoute des lignes avec des données au fur et à mesure, le problème est q Comment afficher des données issues d'une grille dans un graphe en Delphi? [ par edlain ] Bonjour, J'ai des données issues d'un fichier que j'ai stocké dans une grille. Mais je n'arrive pas à les afficher sur un graphe (Outils TeeChart ut stringgrid [ par macdeau ] Comment metttre en gras le contour d'une cellule d'un stringgrid Utilisation de Threads : Bien ou pas bien ? [ par Francky23012301 ] Salut à tous,Une petite question (Oui encore ) : Je suis entrain de faire un ptit truc . Je met un screenshot ca sera plus rapide que d'expliquer la remplir des edit depuis un stringgrid [ par mohamedredha ] boujour tous le monde ou a ceux qui sont entrain de me lire  je vient de débuter dans ce domaine et mes premiers pas sont baser sur les forums, voila calculer total des colonnes d'un grid [ par vladocbm ] bonjour tt le monde j'en ai pas encore fini avec mes questions alors mon souci cette fois ci est de calculer le total des valeures d'une colonne d'une remplire un tringgrid depuis un autre stringgrid [ par mohamedredha ] Bonjour tous le monde et un merçi pour ceux qui aide des gents comme nous !!voila je sais pour vous c'est surement facile mais pour un débutant c' est


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales