DBGrideh1.SelectedRows.CurrentRowSelected := true;//我想通过代码实现DBGRIDEH多选,但用此方法会清除原来选择的记录。有没什么好方法做到可以类型Add的方法?

解决方案 »

  1.   

    先用locate定位到那一行,
    DBGridEh1.DataSource.DataSet.Locate('ID',j,[]);
    然后再将那一行选种状态设置为true
    DBGridEh1.Selection.Rows.CurrentRowSelected:=True;
      

  2.   

    DBGridEh1.SelectedRows.CurrentRowSelected:=true;
    也可以,关键是要先定位行。
      

  3.   

    额,谢谢fghydx的回复,但是我想要的效果不是定位并选择,而是希望做到代码多选。
      

  4.   

    不如做成像网页那样,前面有checkbox选择打勾的
      

  5.   

    你的数据源可以考虑用TClientDataSet,增加calculated类型的字段,选中赋值即可,选择完再把这些选中的进行你需要的处理。
      

  6.   

    我用的就是TClientDataSet+calculated字段,但是选中后GRID的SELECTROW依然为0,我又不想通过循环表来做。SO^
      

  7.   

    用的是EHLIB 3.0的版本,没找到比较满意的做法。
      

  8.   

    http://download.csdn.net/detail/lch0422/2724526
      

  9.   

    用那段代码可以多选呀,你把多选dgMultiSelect设置成True,然后用上面的方法就多选啦。
    定位到行,选定那一行,然后定位到另一行,再选定,这样就选了两行啦。
      

  10.   

    对了。我的是EHLib最新版,不知道其它版行不。
      

  11.   

    先把多选dgMultiSelect设置成True;
    procedure TForm1.Button1Click(Sender: TObject);
    var
       I:integer;
    begin
           for I := 0 to 3 do
              begin
                if ADOTable1.Locate('ID',I*2,[]) then
                    begin
                      DBGridEh1.SelectedRows.CurrentRowSelected:=true;
                    end;
              end;
              ShowMessage(IntToStr(DBGridEh1.SelectedRows.Count));  这里显示为4个。
    end;
    第1,3,5,7行选中..
      

  12.   

    还有个'BUG',CBiz.ChangeCount大于0了。不应该通过数据字段来设置。