应该是这样的,你改了StringGrid中的cells,
以前的内容当然会被覆盖。

解决方案 »

  1.   

    问题:第一次输入若干条记录(StringGrid)且保存退出,当第二交输入时则会依次的把第一次输入的记录复盖。
    解决:该怎样修改这段代码才不会复盖上次的记录?
    代码部份:procedure TForm5.SpeedButton2Click(Sender: TObject);
    begin
         form4.StringGrid1.Cells[1,i+1]:=edit1.text;
         form4.StringGrid1.Cells[2,i+1]:=ComboBox1.Text;
         form4.StringGrid1.Cells[3,i+1]:=ComboBox2.Text;
         form4.StringGrid1.Cells[4,i+1]:=edit5.text;
         form4.StringGrid1.Cells[5,i+1]:=edit3.text;
         form4.StringGrid1.Cells[6,i+1]:=edit4.text;
         i:=i+1;
         form4.stringGrid1.Cells[0,i]:=intTostr(i+0);
         form5.close;
    这是为什幺啊?怎幺改这段代码呢?请各位高手帮忙!不胜感激!!!
      

  2.   

    你的i定义成公用变量
    定义在
    var
      Form1: TForm1;
      i: integer;//定义在这 
    implementation然后在form1的oncreate里写上i:=0;
      

  3.   

    form4.stringGrid1.Cells[0,i]:=intTostr(i+0);
    这怎么又跑到上一个CELL中去了?先把这句{}掉,然后调下i的值有否增加就行了?
      

  4.   

    问题:第一次输入若干条记录(StringGrid)且保存退出,当第二交输入时则会依次的把第一次输入的记录复盖。
    解决:该怎样修改这段代码才不会复盖上次的记录?
    代码部份:procedure TForm5.SpeedButton2Click(Sender: TObject);
    begin
         form4.StringGrid1.Cells[1,i+1]:=edit1.text;
         form4.StringGrid1.Cells[2,i+1]:=ComboBox1.Text;
         form4.StringGrid1.Cells[3,i+1]:=ComboBox2.Text;
         form4.StringGrid1.Cells[4,i+1]:=edit5.text;
         form4.StringGrid1.Cells[5,i+1]:=edit3.text;
         form4.StringGrid1.Cells[6,i+1]:=edit4.text;
         i:=i+1;
         form4.stringGrid1.Cells[0,i]:=intTostr(i+0);
         form5.close;
    该怎样修改这段代码才不会复盖上次的记录?请各位高手帮忙!不胜感激!!!
      

  5.   

    FORM2为主窗体,上面放了一个SpeedButton1,FORM1上有STRINGGRID1;procedure TForm2.SpeedButton1Click(Sender: TObject);
    begin     form1.StringGrid1.Cells[1,i+1]:=edit1.text;
         form1.StringGrid1.Cells[2,i+1]:=ComboBox1.Text;
         form1.StringGrid1.Cells[3,i+1]:=ComboBox2.Text;
         form1.StringGrid1.Cells[4,i+1]:=edit2.text;
         form1.StringGrid1.Cells[5,i+1]:=edit3.text;
         form1.StringGrid1.Cells[6,i+1]:=edit4.text;
         i:=i+1;
         form1.stringGrid1.Cells[0,i]:=intTostr(i+0);
         form1.Show;-----------------------我改了这个,不知道你的意图何在?这样肯定是不会复盖了!
    end;
      

  6.   

    TO:youou
          你改的代码还是会复盖上一次的记录。
    请各位大侠继续关注!TKS!!!
      

  7.   

    不知道你的保存过了是什么意思?
    不过,一般操作stringgrid的话,每次show的时候最好都重写一次单元格。
    你可以把要写的内容保存在数组里,文件里,甚至数据库里,show的时候再调出来,我一向都是这样做的。
      

  8.   

    你的i定义成公用变量
    定义在
    var
      Form1: TForm1;
      i: integer;//定义在这 
    implementation然后在form1的oncreate里写上i:=0;
    form1.StringGrid1.Cells[1,i+1]:=edit1.text;
         form1.StringGrid1.Cells[2,i+1]:=ComboBox1.Text;
         form1.StringGrid1.Cells[3,i+1]:=ComboBox2.Text;
         form1.StringGrid1.Cells[4,i+1]:=edit2.text;
         form1.StringGrid1.Cells[5,i+1]:=edit3.text;
         form1.StringGrid1.Cells[6,i+1]:=edit4.text;
         i:=i+1;
         form1.stringGrid1.Cells[0,i]:=intTostr(i+0);