- 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;
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;