procedure TForm2.DBGrid1DblClick(Sender: TObject);
 var i:integer;
begin                                   //先判断stringgrid1行数不得大于数据集的记录数
   if form1.stringgrid1.rowcount-1<DBGrid1.dataSource.dataSet.recordcount then  
      begin                             //判断dbgrid1第1列的字段值不能与stringgrid1第1列i行的内容相同
      if  form1.stringgrid1.cells[1,i]<>dbgrid1.fields[1].value then
         begin                         //挨个往form1.stringgrid1网格中加显示在from2.DBGrid1中的数据
  form1.stringgrid1.cells[1,form1.StringGrid1.RowCount]:=DBGrid1.dataSource.dataSet.FieldByName('A').AsString;
  form1.stringgrid1.cells[2,form1.StringGrid1.RowCount]:=DBGrid1.dataSource.dataSet.FieldByName('B').AsString;
  form1.stringgrid1.cells[3,form1.StringGrid1.RowCount]:=DBGrid1.dataSource.dataSet.FieldByName('C').AsString;
  form1.stringgrid1.cells[4,form1.StringGrid1.RowCount]:=DBGrid1.dataSource.dataSet.FieldByName('D').AsString;
  form1.stringgrid1.cells[5,form1.StringGrid1.RowCount]:=DBGrid1.dataSource.dataSet.FieldByName('E').AsString;
  form1.StringGrid1.RowCount:= form1.StringGrid1.RowCount + 1;
  form2.Close;                          //双击form2.DBGrid1取值到stringgrid1后关闭form2
         end
      else
         begin
           showmessage('记录不能重复'); //dbgrid1第1列的字段值不能与stringgrid1第1列i行的内容相同时提示
         end;
      end
   else
      begin
       showmessage('重复录入');//stringgrid1行数不得大于数据集的记录数提示(实际如果I能成功控制,这个就是多余的)      end;
end;
说明:
如果按以上代码运行的话,form1.stringgrid1(i:=1时)中无论取dbgrid1中那一行作为其第一行,会提示'记录不能重复'
但从form1.stringgrid1第二行起如果再有重复的话就不提示,直接重复录入
即时代码中不能有效的控制变量i,不知道将i:=i+1放到哪里去控制,
试来好多次,都不行肯请坛子里面的大虾们帮忙看下哟!
在此先谢过了