在StringGrid中怎样删除一行,这好像是个老问题了。
但是我没有找到一个好的办法。在线等。。

解决方案 »

  1.   

    type
      TStringGridEx = class(TStringGrid);procedure TForm1.Button1Click(Sender: TObject);
    begin
        TStringGridEx(StringGrid1).DeleteRow(5);
    end;引自:http://community.csdn.net/Expert/topic/4244/4244854.xml?temp=.1345331
      

  2.   

    或者把这句加在Tform1定义前面
    type
      TStringGrid = class(TDrawGrid);
    然后就可以用stringgrid1.deleterow函数了。
      

  3.   

    我用的这个,但是我不知道怎样去用它的双击事件啊。
    sgringgrid.Dblclick
      

  4.   

    我定义这样一个类:
    type 
      TExCell=class(TStringGrid)
      public
         procedure DeleteRow(ARow: Longint);
    end;
    这是那个过程:
    procedure TExCell.DeleteRow(ARow: Longint);
    begin
      MoveRow(ARow,RowCount-1);
      RowCount:=RowCount-1;
    end;然后我在窗体初始化的时候来创建一个:
      sg_splr:=TExCell.Create(application);
      sg_splr.Parent := groupbox2; 
    这一切都没有问题。但是它的双击事件我应该怎么调用啊。我在双击他的时候要把获得焦点的这一行的数据放到EDIT里面。然后修改完成后在放回去。
      

  5.   

    procedure TForm1.StringGrid1DblClick(Sender: TObject);
    begin
      showmessage(stringgrid1.Rows[stringgrid1.row].Strings[0]);
    end;
      

  6.   

    type
      TExCell=class(TStringGrid)
      private
         FEdit: TEdit;
      public
         procedure DeleteRow(ARow: Longint);
         procedure StringgridDblClick(Sender: TObject);
      published
       property Edit:TEdit read FEdit Write FEdit;
    end;
    procedure TExCell.DeleteRow(ARow: Longint);
    begin
      MoveRow(ARow,RowCount-1);
      RowCount:=RowCount-1;
    end;
    procedure TExCell.StringgridDblClick(Sender: TObject);
    begin
       Edit.Text:=TExCell(Sender).Cells[1,1];//
    end;
            sg_splr:=TExCell.Create(application);
          sg_splr.Parent := groupbox1;
          sg_splr.Edit:=Form1.Edit1;
          sg_splr.OnDblClick:=sg_splr.StringgridDblClick;
      

  7.   

    晕,不是有deleterow方法了嘛?怎么还麻烦呢?不明白楼主要实现什么到底?
      

  8.   

    http://community.csdn.net/Expert/topic/4244/4244854.xml?temp=.1345331
    这个你好好看看啦,不错的帖子。
      

  9.   

    procedure TExCell.StringgridDblClick(Sender: TObject);
    var i:integer;
    begin
         for i:=0 to ColCount-1 do
         begin
             Edit.Text:=Edit.Text+Cells[i,Row];
         end;
    end;