DBGrid选中多行时怎么判断某一行是否选中?然后对该行操作!

解决方案 »

  1.   

    var
      x: Integer;
      TempBook: TBookMark;
    begin
      DBGrid1.Datasource.Dataset.DisableControls;
      with DBgrid1.SelectedRows do
      if Count > 0 then
      begin
        TempBook := DBGrid1.Datasource.Dataset.GetBook;
        for x := 0 to Count - 1 do
        begin
          if IndexOf(Items[x]) > -1 then
          begin
            DBGrid1.Datasource.Dataset.Book := Items[x];
            ShowMessage(DBGrid1.Datasource.Dataset.Fields[1].AsString);
          end;
        end;
        DBGrid1.Datasource.Dataset.GotoBook(TempBook);
        DBGrid1.Datasource.Dataset.FreeBook(TempBook);
      end;
      DBGrid1.Datasource.Dataset.EnableControls;
    end;
      

  2.   

    http://dhome.myrice.com/Tips/Database/tip18.htmTDBGrid控件中对多个记录的处理 
    ---- DELPHI 的TDBGrid 控 件 主 要 用 来 处 理 数 据 表, 它 的 属 性 中 有 一 个dgMultiSelect, 若 此 属 性 设 定 为TRUE, 则 可 以 选 中 多 个 记 录( 可 用CTRL + 鼠 标 左 键 选 择 多 个 记 录)。 对 选 中 的 多 个 记 录 可 以 有 以 下 几 种 处 理 方 式, 比 较 简 单 的 两 种 是: 清 除 所 有 的 选 择 记 录 可 用DBGrid1.SelectedRows.Clear 语 句; 删 除 所 有 的 选 择 记 录 可 用DBGrid1.SelectedRows.Delete 语 句。 但 如 果 想 获 得 选 中 的 所 有 记 录 的 其 他 信 息, 比 如, 在 单 独 的 一 个 窗 体 中 显 示 用 户 选 择 的 记 录 的 第 一 个 字 段 的 内 容( 如 所 有 选 择 的 姓 名) 如 何 处 理 呢 ? 这 就 要 使 用 书 签 功 能 了, 下 面 是 笔 者 编 写 的 一 个 程 序 中 的 过 程, 用 来 将 用 户 选 择 的 多 个 记 录 集 中 显 示 在 另 外 一 个 窗 体 中( 笔 者 使 用 的 是DELPHI4), 供 参 考 使 用。 
    procedure GetSelectedRecord
       (DataSet : TDataSet;  //数据表
       FieldName : String; //字段名称
       BookList : TBookList;  // 书签、用来保存所选字段内容的
       Strings : TStrings); //字符串(用于将内容传递到另一个单独窗体中的TLIST控件中)
    var
      I: Integer;
      bm : TBookMark;
    begin
      Strings.Clear;
      with Dataset do  
      begin
        DisableControls;
        bm := GetBookMark;
        try
         //每个选择的记录都有一个书签标志, 这就为处理它们提供了条件
         for I := 0 to BookList.Count - 1 do  
         begin
           Book := BookList[I];
           Strings.Add(DataSet.FindField(fieldname).AsString);
          end;
        finally
          GotoBookMark(bm);
          FreeBookMark(bm);
          EnableControls;
        end;
      end;
    end;调用举例:
      GetSelectedRecord(Table1, 'NAME', DBGrid1.SelectedRows,   Form2.ListBox1.Items);