Convertir dbgrid en stringgrid

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 453 fois - Téléchargée 31 fois

Contenu du snippet

Une petite procedure qui permet de convertir un DBgrid en stringgrid.
Très pratique pour ceux qui ne veulent pas s'embêter à utiliser le composant DBgrid qui est très contraignant et peu modulable.

Source / Exemple :


procedure dbgridtostringgrid(db:tdbgrid;str:tstringgrid);

var ta:tdataset; // dataset est le lien de donné de la base du dbgrid
    i,j:integer; // compteur de parcours

begin
  ta:=db.DataSource.DataSet; //on récupère le dataset dans ta
  if ta.Filtered then //on place le pointer sur le premier élément du filtre si le dbgrid est filtré
    ta.FindFirst
  else
    ta.First; //sinon on place le pointer sur le premier élément
  j:=0; //initialisation de j
  str.RowCount:=1;
  str.FixedCols:=0; //nombre de colonne fixe (gris)
  str.ColCount:=db.Columns.Count; //on ajuste le nombre de colonne du stringgrid en fonction du dbgrid
  for i:=0 to db.Columns.Count-1 do //on parcours toutes les colonnes de la première ligne pour ajuster la ligne fixe
    begin
    str.Cells[i,0]:=db.Columns.Items[i].FieldName;
    end;
  while not ta.Eof do //tant que l'on a pas atteint la fin des données
    begin
    j:=j+1; //on incrémente le conteur de ligne (pour le stringgrid)
    str.RowCount:=str.RowCount+1; //on ajoute une ligne dans le stringgrid
    for i:=0 to db.Columns.Count-1 do //pour toutes les colonnes on recopie les données
          str.Cells[i,j]:=db.Columns.Grid.Fields[i].AsString;
    ta.Next; //on passe à la prochaine ligne de la source de données
    end;
  if str.RowCount>1 then str.FixedRows:=1; //si il y a au moins une ligne, la première est fixe
end;

Conclusion :


On peut rajouter un traitement pour le cas où il n'y a aucune ligne dans le dbgrid mais une exception doit être levé déjà bien avant.

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
dimanche 10 mai 2009
Statut
Membre
Dernière intervention
13 décembre 2009

merci
Messages postés
65
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
25 février 2019

bravo
Messages postés
33
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
8 avril 2011

TRES INTERESSANT, UTILE !
Messages postés
7
Date d'inscription
dimanche 11 juin 2006
Statut
Membre
Dernière intervention
25 novembre 2007

Bjr,
les paramètres de la procedure sont les noms du dbgrid et du stringgrid. (le dbgrid doit bien sur être correctement lié à la base de donnée).
Messages postés
1
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
11 novembre 2007

j'aimerais bien appliquer ce code dans mon ptit projet justement je suis au niveau d'exploiter un stringgrid j'ai déjà rempli mon dbgrid mais j'arrive pas à mettre les données de la table ou du dggrid dans le stringgrid et puis je vois pas l'équiv. de tdataset? c'set l'alias de la base de données ou nom de la table ou simplement nom du dbgrid?
avez vous une idée sur l'usage des tableaux dynamique croisés possédant une base de données access
merci pour votre aide
Afficher les 10 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.