bonjour,
je lance un petit sondage:
quelle DBgrid utilisé vous ?
De mon coté c'est la smdBgrid de scalabium (freeware)
Mais je voudrais évoluer (en payant si il le faut) et je ne sais pas quoi choisir .
que pensez vous de le Ehlib ?
merci
bonjour,
je lance un petit sondage:
quelle DBgrid utilisé vous ?
De mon coté c'est la smdBgrid de scalabium (freeware)
Mais je voudrais évoluer (en payant si il le faut) et je ne sais pas quoi choisir .
que pensez vous de le Ehlib ?
merci
Le JvcDBGrid est pas mal
contenu dans la JVCL
[Il était une fois Delphi ....]
J'utilise le plus souvent le
TEpcDBGrid (objet interne) basé sur le TcrGrid de CoreLab Devart car bien optimisé pour les TMyDataSet pour MySQL de CoraLab Devart, une vieille version
TAdvDBGrid ou TAdvDBStringGrid de TMS, très fonctionnels mais aussi très lourd, encore une fois une vieille version, en tout cas, cela propose bcp plus de fonctionnalité que je pourrais en utiliser, en fait, y en a de trop ...
TcxDBGrid de Dev Express, comme celui de TMS, mêmes fonctionnalités, mêmes lourdeurs ... mais il vrai ça a de la gueule ... moi, je n'y avais pas le droit, c'était pour ceux qui faisait des programmes Delphi 7, moi je faisais des programmes Delphi 7 aussi mais j'avais une contrainte de rétro-compatibilité sur Delphi 3 donc TDBGrid ... et on peut dire que je l'ai bien trituré ...
TJvcDBGrid, je ne l'ai jamais creusé, chose à corriger !
Sinon, je me débrouille très bien avec le bon vieux TDBGrid ou le TDBCtrlGrid ... je me gène pas pour jouer avec OnDrawColumnCell, pour dessiner une plus grosse Font, des images, de la couleur, ...
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Le TcxDBGrid de Dev Express est très riche en possibilité, et puis ça donne de la "gueule" aux interfaces, les autres pas testés.
Personnellement, c'est la TCustomGrid que je dérive en fonction de mes besoins pour faire ce que je veux, exactement ce que je veux et surtout rien d'autre !
Comme ça je ne perds pas mon temps à devoir supprimer/désactiver ou contourner des fonctionnalités introduites par un composant tiers qui veut faire automatiquement un tas de choses (et le plus souvent sans même qu'on le sache) alors que je ne lui ai rien demandé...
Bonjour,
Personnellement, j'utilise ehLib http://www.ehlib.com EhLib Software. Ce composant est payant, mais d'un prix raisonnable sans les sources.
Il me donne satisfaction pour travailler avec Firebird.
J'ai utilisé smdBgrid, mais dans certaines situations, l'affichage n'est pas top.
Par contre, je pense que pour l'avenir, je compléterai en dérivant de TCustomGrid, car comme la plupart des composants EhLib fournit une multitude d'options bien souvent inutiles.
Voilà ma modeste expérience.
Bon courage à tous
, c'est quand même pas à la portée de tous, faut investir quand même pas mal de temps pour reproduire le DataLink du TDBGrid ...
Ce qui serait vraiement interessant ça serait de faire une Grid en appliquant quelques patterns pour déporter l'implémentation de plusieurs interfaces (genre IGridColumnController, IGridDataCellController, IGridDataLinker, ...) dans un code tiers, chaque interface ayant une tache bien précise ... après tout une DBGrid c'est une Grid, on peut imaginer un système de remplissage commun entre une DBGrid et une StringGrid (je pense en particulier à des chargements partiels et une ScrollBar simulé), et surtout interchangeable ... parce que l'héritage, c'est pas toujours le plus pratique, faut soit tout refaire, soit bidouiller comme un malade en recopiant des bouts de codes et qu'au final on a modifié à peine 5% de code ...
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
je pense qu'il n'y a pas vraiment de DBGrid miracle répondant à toutes les exigeances.
Tout dépend de ce que l'on veut en faire.
Mais par ordre de fréquence d'utilisation :
1) le TDBGrid
2) le JVCDBGrid
3) le DXDBGrid
[Il était une fois Delphi ....]
salut
le TCustomGrid ,TDbGrid et le TStringGrid
@+ Phil
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
Je pense plus au cxgrid de DevExpress.
A la base, leur philosophie est différente des grille standard, mais une fois qu'on a compris leur fonctionnement c'est du bonheur.
On progresse .....
En fait, mon but c'est de me passer du DataLink aussi ! (bon d'accord ce n'est plus une grille DB )
Au final, ça se résume simplement à dessiner la grille à partir de n'importe quoi comme source de données : TMemoryDataSet, TList, Array...
Je crée une première classe dérivée enrichie avec plein de fonctions utilitaires pour facilité le dessin des cellules (en-tête avec un fond dégradé, numérique aligné à droite...).
Puis je l'utilise comme une TDrawGrid pour afficher les données qui sont gérées indépendemment de la grille.
De cette façon, tu peux faire des trucs de fou en 10 lignes de code (parfois un peu plus...).
Salut,
Pour moi, La meilleur grille pour delphi est définitivement la cxGrid de DevExpress. Outre la customisation des styles et du look&feel, l'architecture sous forme de View est un bonheur.
Les fonctionnalités dèjà implémentées tel que les groupements, le système de filtre trés efficace sont un régal autant pour le développeur que pour l'utilisateur final.
Leur ExpressDateController permet d'alimenter la cxGrid avec n'importe quel données d'un sgbd ou fichier xml, stream....
Au niveau performance, je n'est eu jusqu'à aujourd'hui aucun problème.
Bref pour moi, aucun regret à avoir claqué environ 400$ pour acquérir cette grille qui si on la regarde bien,
fait economiser 5 ans de développement s'il fallait la developper en interne.
PS: je n'ai pas d'action DevExpress ou aucun lien que ce soit avec cette société
Akim Merabet
tu passe par de l'héritage, ça ne serait pas plus pratique d'avoir un TGenericGrid auquel tu fournis un Itérateur, ce dernier étant créé à la volée et associé avec un DataSet, une Liste ou un tableau ... la composition c'est quand même plus facile que l'héritage systématiquement, exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Self.GGrid.Iterator := TGenericGridIteratorDataSet.Create(Self.MemoryDataSet); Self.GGrid.OwnIterator := True; Self.GGrid.Active := True; // ça affiche seulement là ! ... cela permet de gérer des BeginUpdate\EndUpdate ou Enable\DisableControls de façon générique aussiTGenericGridIterator* implémente une interface IGenericGridIterator qui implémente First, Last, Prior, Next, EOF, BOF, GetRecord ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Self.GGrid.Iterator := TGenericGridIteratorMaListe.Create(MaListe); Self.GGrid.OwnIterator := True; Self.GGrid.Active := True; // ça affiche seulement là ! ... cela permet de gérer des BeginUpdate\EndUpdate ou Enable\DisableControls de façon générique aussi
et l'on imagine comme pour le TField qui concerne le DataSet, selon le mêem principe, au lieu que les colonnes soit liées à un type de données, elles sont plutôt associé à un type de présentation pour les colonnes comme TGenericGridColumnLabel, TGenericGridColumnEdit, TGenericGridColumnCombo, TGenericGridColumnImage, TGenericGridColumnTreeView, TGenericGridColumnSubGrid, ...
Finalement, le DataController de la cxGrid dont parle Kaféine, je ne l'a connais que trop peu pour avoir vu ça en 2004, est un début d'éclatement du code ...
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Tu es en train de nous décrire la DataGrid de .Net
Dans cette approche, tu restes sur des présentation de type liste de valeurs, avec chaque ligne présentée à l'identique de la précédente. Ca convient pour des besoins assez simples (comme n'importe quelle grille Db en fait).
Personnellement, j'utilise assez peu de grilles, et très rarement sur des cas simples. Dès que tu veux changer la présentation d'une ligne en fonction de la nature de l'information représentée, passer une ligne en gras (ou avec une police différente) par ce qu'elle représente un sous total (ou une ligne de titre)... soit tu mes en place une usine à gaz côté paramétrage avec un composant plus ou moins générique, soit tu fais un truc qui déclenche des événements dans tous les sens afin de contrôler la présentation des données.
Ou encore, tu prends une approche plus MVC ou document/vue :
- D'un côté tu as les structures de données qui modélisent l'information à afficher.
- Et d'un autre, la grille n'est qu'une vue pour dessiner la donnée. Dans ce cas, la grille te dis : "Je dois dessiner la cellule X,Y qu'est-ce que je fais ?". Et tout ce que j'ai à faire, c'est dessiner la cellule en fonction des données du modèle.
- Si en plus il faut quelques interactions utilisateurs, tu peux ajouter un controlleur pour les gérer, qui ira modifier les données du modèle et invalider la grille pour quelle se redessine toute seule.
J'ai commencé avec TVirtualStringTree, je me suis plongé dans le code, très interessant, mais on passe beaucoup de temps dessus quoique le résultat était pas mal. En passant aux composants DevExpress, il faut quand même reconnaître qu'ils sont très bien fait et comme dit plus haut, faire son composant soi même demande du temps et de l'experience. L'inconvénient, comme ils sont paramétrable à volonté, il faut maîtriser toute cette complexité qui parfois donne envie de faire un composant soi même uniquement par rapport à des besoins précis.Envoyé par Franck SORIANO
Bref, l'idéal serait de pouvoir créer un composant DBGrid à partir d'un wizard. C'est un peu décalé comme reflexion, mais en regardant un peu le code source de divers composants, on se rend compte qu'il y a des patterns pour ne pas employer le terme.
Ah, ben, heureusement que le .NET qui est quand le dernier FrameWork Objet à la mode contient ce genre de chose, vu mon pauvre niveau en patterns, on peut espérer que les têtes pensantes de MicroSoft, le fassent si nous on l'imagine vaguement, tiens, j'en parlerais à mon cousin qui fait du C# ...
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager