dbgrid下
              columns[0]     columns[1]  columns[2]
                 ID              NAME        SEX
 
dbgrid显示了很多条记录,现在需要让ID=1的那条记录被选中,就是实现ID=1的那条记录setfoucs的效果,请问如何实现?

解决方案 »

  1.   

    dbgrid1.DataSource.DataSet.Locate('id','1',[]);
    dbgrid1.SetFocus;
      

  2.   

    procedure Tchk_bmf.DBGrid1DblClick(Sender: TObject);
    var
    chkid,chklong,title,sqlbak,sql_add:string;
    begin
    if ado_1.Active=true then
    begin
    if dbgrid1.DataSource.DataSet.RecordCount<>0   then
      begin
            chkid:=dbgrid1.DataSource.DataSet.Fields.Fields[0].Value;
            chklong:='4';
            title:=chkid+'_'+dbgrid1.DataSource.DataSet.Fields.Fields[1].Value+'_考试报名信息';
            sql_add:='declare @chkid varchar(6),@chklong int select @chkid='
                      +''''+chkid+'%'+''''+',@chklong='+chklong+'  ';
            sqlbak:=ado_2bak;
           // showmessage(title);
            link_alldb(sql_add,sqlbak,title,ado_2,tab_kq,Page_bm);
      end
      else showmessage('  没有可选择的记录 ');
    end;
    end;
      

  3.   

    var
      RowCount:integer;
      TempBookMark:TBookMark;
    begin
      DBGrid.Datasource.Dataset.DisableControls;
      if DBGrid.SelectedRows.Count > 0 then
      begin
        TempBook := DBGrid.Datasource.Dataset.GetBook;
        for RowCount := 0 to GKUsed.SelectedRows.Count - 1 do
        begin
          if DBGrid.SelectedRows.IndexOf(DBGrid.SelectedRows.Items[RowCount]) > -1 then
          begin
            DBGrid.Datasource.Dataset.Book := GKUsed.SelectedRows.Items[RowCount];
          ....
          end;
        end;
        DBGrid.Datasource.Dataset.GotoBook(TempBook);
        DBGrid.Datasource.Dataset.FreeBook(TempBook);
      end;
      DBGrid.Datasource.Dataset.EnableControls;
    end;记得把dgMultiSelect:=true;
      

  4.   

    locate方法最好还有一种,但苯了点
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j: integer;
    begin
      DBGrid1.Options := DBGrid1.Options + [dgRowSelect] + [dgMultiSelect];
      DBGrid1.DataSource.DataSet.First;
      for i := 1 to DBGrid1.DataSource.DataSet.RecordCount do
      if DBGrid1.DataSource.DataSet.Fields[0].AsInteger = 1 then
      begin
        DBGrid1.SelectedIndex := 0;
        DBGrid1.SelectedField.FocusControl;
        Break;
      end
      else DBGrid1.DataSource.DataSet.Next;
    end;
      

  5.   

    dbgrid1.DataSource.DataSet.Locate('id','1',[]);
      

  6.   

    简言之,就是把与 DBGrid 关联的数据集 (TTable 或 TQuery) 定位到需要的那条记录即可。
    大家常用数据集的 Locate 方法。
      

  7.   

    我想用代碼實現DBGrid所有行的選中﹐該如何寫﹖多謝﹗