Bonjour,

J'essaie de comprendre l'unité écrite par Stéphane Vidouse pour l'impression des DBGrid, DataSet et StringGrid et que vous trouverez ici : http://svidouse.developpez.com/impression-grille/.

Je suis confronté à une erreur à la compilation: la partie gauche n'est pas affectable :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure AjouterUnChamp(Titre : string; Tbl : TClientDataSet;
  Largeur : integer);
const
  Numero : integer = 0;
var
  Fld : TStringField;
  Nom : string;
begin
  Fld := TStringField.Create(Tbl);
  Nom := 'Champ'+inttostr(Numero);
  with Fld do begin
    Size := 255;
    SetFieldType(ftString);
    Name := Nom;
    FieldName := Nom;
    Index := Numero;
    DisplayLabel := Titre;
    DisplayWidth := strtoint(formatfloat('0',Largeur));
    DataSet := Tbl;
  end;
  Numero := Numero + 1;  <=== ERREUR ICI
end;
J'ai tenté de modifier la procédure ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
procedure AjouterUnChamp(Titre : string; Tbl : TClientDataSet;
  Largeur : integer);
var
  Numero : integer;  <=== MODIFIE ICI
  Fld : TStringField;
  Nom : string;
begin
  Numero :=0;        <=== MODIFIE ICI
  Fld := TStringField.Create(Tbl);
  Nom := 'Champ'+inttostr(Numero);
  with Fld do begin
    Size := 255;
    SetFieldType(ftString);
    Name := Nom;
    FieldName := Nom;
    Index := Numero;
    DisplayLabel := Titre;
    DisplayWidth := strtoint(formatfloat('0',Largeur));
    DataSet := Tbl;
  end;
  Numero := Numero + 1;
end;
A l'exécution du programme, delphi me met : un composant nommé myQRlabelSpec0 existe déjà. Cela n'est pas étonnant puisque à chaque entée dans la procédure la variable numero est remise à 0.

Comment puis-je faire pour modifier le code sans que cela ne modifie le fonctionnement du programme.