各位,请帮忙,我对stringgrid不熟悉:
我用的是adoquery,stringgrid;我已经将数据库中的数据显示出来了,但是我不会编辑。我有三个按钮,增加,保存,当我分别点击它们的时候,分别增加、保存所有行;删除,删除当前行;谢谢了。

解决方案 »

  1.   

    最好用DBGrid控件代替stringgird
    否则你还要自己写添加删除保存如果非要自己写,那么用sql的insert, update, delete来完成
    stringgird中还必须记录那个数据表的主关键字,方便找到记录。
      

  2.   

    // ********************************************************************************************************
    // 删除TStringGrid类中指定行
    procedure TForm1.DeleteRow(Row: Integer);
    var i : integer;
    begin
       if (Row < StringGrid1.RowCount) and (Row > Stringgrid1.FixedRows-1) then
          if Row < StringGrid1.RowCount - 1 then begin
             for i := Row to StringGrid1.RowCount-1 do
                StringGrid1.Rows[i] := StringGrid1.Rows[i+1];
             StringGrid1.RowCount := StringGrid1.RowCount - 1;
          end else
             stringGrid1.Rows[Row].Clear;
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    var Sel : TGridRect;
    begin
       Sel := StringGrid1.Selection;
       DeleteRow(Sel.Top);
    end;
      

  3.   

    增加只要使用:StringGrid1.Cells[i, j] := 'aaa';
      

  4.   

    如果可以用dbgrid,我早就用了的, liudeihua(天苍苍)
    怎样把数据逐行上移呢? MaJun2K(日向葵) 
    我怎样把stringgrid中经过删除或者增加后的所有数据读出来,放入到数据库中呢?
      

  5.   

    MaJun2K(日向葵) 给的程序已经是实现了的啊!
    如果你想添加一行就写到数据库的话,我建议你用dbgrid之类的控件,我觉得用stringgrid的好处就是可以批处理一些数据,好操作一些啊!
      

  6.   

    to shixilaoshi(我不信女孩不能做程序员) >如果可以用dbgrid,我早就用了的,
    想不出来什么情况让你必须用StringGrid?
    应该说DBGrid比StringGrid功能强大得多,
    StringGrid能做的,DBGrid也应该能做。
    或许你把你的具体需求写出来,更方便找到合理的解决方案。>怎样把数据逐行上移呢?
    逐行上移其实就是让上一行的内容等于下一行的,然后循环到最后,把最后一条记录去掉。
    stringGrid可以用row[]来整行移动,大概如下(未经过测试):
    with STringGrid do
    begin
      for i:=要删除的行号 to RowCount-2 do
        Row[i]:=Row[i+1] //上移一条记录
      RowCount:=RowCount-1 //删除一行
    end;>我怎样把stringgrid中经过删除或者增加后的所有数据读出来,放入到数据库中呢?
    这个应该设置一个和stringgrid中的行/记录对应的标志数组,用来记录对该行的操作。
    为了准确最好用主关键字来标记记录,比如记录删除了id=2的记录,修改了id=5的记录。
    保存的时候直接删除,然后去stringGrid中搜索id=5的那一行,用update