小弟有一事不解:
 用的是Delphi6自带的DBGrid控件,我把它的dgMultiSelect(支持多选).
问题是: 我怎样才能把用户选中的记录挨个读出呢?(怎样判断用户都选中了哪一条记录)

解决方案 »

  1.   

    http://delphi.about.com/od/usedbvcl/l/aa032503a.htmprocedure TForm1.btnDoSumClick(Sender: TObject);
    var
      i: Integer;
      sum : Single;
    begin
      if DBGrid1.SelectedRows.Count > 0 then
      begin
        sum := 0;
        with DBGrid1.DataSource.DataSet do
        begin
          for i := 0 to DBGrid1.SelectedRows.Count-1 do
          begin
            GotoBook(Pointer(DBGrid1.SelectedRows.Items[i]));
            sum:= sum + AdoQuery1.FieldByName('Size').AsFloat;
          end;
        end;
        edSizeSum.Text :=  FloatToStr(sum);
      end
    end;
      

  2.   

    DBGrid1.SelectedRows.CurrentRowSelected:=True; //默认当前行为选中状态
      for i:=0 to DBGrid1.SelectedRows.Count -1 do
      begin
        dm.AQry_Employee.GotoBook(Pointer(DBGrid1.SelectedRows.Items[i]));//指向选中行
        .........   end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
        var
        i:integer;
        booklist:Tbooklist;
        book:tbookstr;
        begin
          book:=adoquery1.Book;
          booklist:=dbgrid1.SelectedRows;
          try
          begin
            for i:=0 to booklist.Count-1 do
            begin
              adoquery1.Book:=booklist[i];
              with adoquery1 do
              begin
                edit;
                fieldbyname('mdg').AsString:=edit2.Text;
                post;
              end;
            end;
          end;
          finally
          adoquery1.Book:=book;
          end;
        end;