cs_bazole
Messages postés37Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention13 novembre 2005 25 oct. 2004 à 18:12
Normalement tu doit utiliser le forum pour obtenir une aide.
Le plus simple, c'est de sortir la variable "ligne" de ta procédure pour qu'elle conserve sa valeur après chaque appel. Tu peu la déclarer dans la partie implémentation : voir ci dessous
-----------------------------
implementation
{$R *.dfm}
var ligne: integer = 0;
-----------------------------
Ensuite tu modifie ta procédure Button1Click en la simplifiant :
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
with StringGrid1 do
begin
Inc(ligne);
cells[1,ligne]:=edit1.Text;
cells[2,ligne]:=edit2.Text;
cells[3,ligne]:=edit3.Text;
cells[4,ligne]:=edit4.Text;
end;
end;
bazole
divadav
Messages postés94Date d'inscriptionlundi 13 janvier 2003StatutMembreDernière intervention22 janvier 20092 25 oct. 2004 à 17:45
Ben non, ça peu pas marcher.... ;-p
La boucle "FOR" est mauvaise...
Et la variable LIGNE doit être globale, ce qui veut dire que tu ne dois pas la déclarer dans la fonction, mais bien avant dans le code...
Au final, la fonction du bouton donne ça :
====================================
procedure TForm1.Button1Click(Sender: TObject);
begin
with StringGrid1 do begin
Rows[ligne].clear;
cells[1,ligne]:=edit1.Text;
cells[2,ligne]:=edit2.Text;
cells[3,ligne]:=edit3.Text;
cells[4,ligne]:=edit4.Text;
end;
Inc(ligne);
end;
================================
Et la variable Ligne est déclarée ici :
================================
var
Form1: TForm1;
ligne: Integer;
implementation
================================
Ce qui donne :
================================
unit Unit1;
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do begin
Cells[1,0] := 'Colonne 1';
Cells[2,0] := 'Colonne 2';
Cells[3,0] := 'Colonne 3';
Cells[4,0] := 'Colonne 4';
end;
Inc(ligne);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with StringGrid1 do begin // Point d'arrêt (cf ci-dessous)
Rows[ligne].clear;
cells[1,ligne]:=edit1.Text;
cells[2,ligne]:=edit2.Text;
cells[3,ligne]:=edit3.Text;
cells[4,ligne]:=edit4.Text;
end;
Inc(ligne);
end;
end.
=================================
Voilà voilou !!
Et quand tu as un problème comme ça que tu ne comprends pas, tu peux suivre ta boucle en mettant un point d'arrêt : tu mets le curseur au début de ta fonction et tu appuies sur F5 : la ligne doit être surlignée en rouge.
Quand tu lance l'éxécution, tu click sur ton bouton, et le code arrive à l'endroit du point d'arrêt... Tu peux alors avancer étape par étape dans ton code en appuyant sur F7, et tu peux vérifier la valeur de tes variables en mettant le curseur dessus....
Et la prochaine fois, écris dans le forum au lieu de mettre une source : tu peux faire un copier/coller du code...
25 oct. 2004 à 18:12
Le plus simple, c'est de sortir la variable "ligne" de ta procédure pour qu'elle conserve sa valeur après chaque appel. Tu peu la déclarer dans la partie implémentation : voir ci dessous
-----------------------------
implementation
{$R *.dfm}
var ligne: integer = 0;
-----------------------------
Ensuite tu modifie ta procédure Button1Click en la simplifiant :
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
with StringGrid1 do
begin
Inc(ligne);
cells[1,ligne]:=edit1.Text;
cells[2,ligne]:=edit2.Text;
cells[3,ligne]:=edit3.Text;
cells[4,ligne]:=edit4.Text;
end;
end;
bazole
25 oct. 2004 à 17:45
La boucle "FOR" est mauvaise...
Et la variable LIGNE doit être globale, ce qui veut dire que tu ne dois pas la déclarer dans la fonction, mais bien avant dans le code...
Au final, la fonction du bouton donne ça :
====================================
procedure TForm1.Button1Click(Sender: TObject);
begin
with StringGrid1 do begin
Rows[ligne].clear;
cells[1,ligne]:=edit1.Text;
cells[2,ligne]:=edit2.Text;
cells[3,ligne]:=edit3.Text;
cells[4,ligne]:=edit4.Text;
end;
Inc(ligne);
end;
================================
Et la variable Ligne est déclarée ici :
================================
var
Form1: TForm1;
ligne: Integer;
implementation
================================
Ce qui donne :
================================
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Edit4: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
ligne: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do begin
Cells[1,0] := 'Colonne 1';
Cells[2,0] := 'Colonne 2';
Cells[3,0] := 'Colonne 3';
Cells[4,0] := 'Colonne 4';
end;
Inc(ligne);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with StringGrid1 do begin // Point d'arrêt (cf ci-dessous)
Rows[ligne].clear;
cells[1,ligne]:=edit1.Text;
cells[2,ligne]:=edit2.Text;
cells[3,ligne]:=edit3.Text;
cells[4,ligne]:=edit4.Text;
end;
Inc(ligne);
end;
end.
=================================
Voilà voilou !!
Et quand tu as un problème comme ça que tu ne comprends pas, tu peux suivre ta boucle en mettant un point d'arrêt : tu mets le curseur au début de ta fonction et tu appuies sur F5 : la ligne doit être surlignée en rouge.
Quand tu lance l'éxécution, tu click sur ton bouton, et le code arrive à l'endroit du point d'arrêt... Tu peux alors avancer étape par étape dans ton code en appuyant sur F7, et tu peux vérifier la valeur de tes variables en mettant le curseur dessus....
Et la prochaine fois, écris dans le forum au lieu de mettre une source : tu peux faire un copier/coller du code...
Keep Cool & Be Wild
DivaDz