问题:第一次输入若干条记录(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;
这是为什幺啊?怎幺改这段代码呢?请各位高手帮忙!不胜感激!!!
应该是这样的,你改了StringGrid中的cells,
以前的内容当然会被覆盖。
不要close,按一次输入一行
你的i定义成公用变量
定义在
var
Form1: TForm1;
i: integer;//定义在这
implementation
然后在form1的oncreate里写上i:=0;
form4.stringGrid1.Cells[0,i]:=intTostr(i+0);
这怎么又跑到上一个CELL中去了?
先把这句{}掉,然后调下i的值有否增加就行了?
你关窗后,i被释放,你再开时,自然是盖了以前的记录。
i应在主窗体中定义为全局变量。
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;
不知道你的保存过了是什么意思?
不过,一般操作stringgrid的话,每次show的时候最好都重写一次单元格。
你可以把要写的内容保存在数组里,文件里,甚至数据库里,show的时候再调出来,我一向都是这样做的。