StringGrid作为用记录入数据界面,以下代码是实现点击时产生一个新行,问题是:当StringGrid中有数据时,即用户保存过单据,再修改StringGrid处于可编辑状态,执行以下代码会在新产生的行中显示上一行的数据,也就是说产生了一个有数据的行,数据与上一行相同。百思不得其解呀,,,procedure TForm10.GridsClick(Sender: TObject);//***********鼠标点击时产生一个新行***********//
if (StringGrid.Row=StringGrid.RowCount-1)and (nbNew.Enabled=False)and(nbSave.Enabled=True) then
     StringGrid.RowCount:=StringGrid.RowCount+1;     
     StringGrid.Rows[StringGrid.RowCount].Clear;
     StringGrid.Refresh;
end;

解决方案 »

  1.   

    用advstringgrid吧,它可以直接insertrows(),removerows
      

  2.   

    StringGrid.Rows[StringGrid.RowCount].Clear;
    换成
    StringGrid.Rows[StringGrid.RowCount-1].Clear;
      

  3.   

    if (StringGrid.Row=StringGrid.RowCount-1)and (nbNew.Enabled=False)and(nbSave.Enabled=True) then
    //这你是不是漏了一个begin?
      StringGrid.RowCount:=StringGrid.RowCount+1;   
    //否则下面3行应该靠前
      StringGrid.Rows[StringGrid.RowCount].Clear;
      StringGrid.Refresh;
    end;
      StringGrid.RowCount:=StringGrid.RowCount+1;   
    只是在最下面增加一行而已