OnMouseUp()
  if gShow.SelectedRows.Count<>m_nLastCnt then
    Calc();
  m_nLastCnt := gShow.SelectedRows.Count;

解决方案 »

  1.   

    楼上的方法是行不通的,多选时可能只用keyboard根本未触发MouseUp,而且即使用Mouse+Ctrl在选不同的记录时,只要所选择的记录数相同,也不会触发的,不过还是谢谢!
      

  2.   

    你先试试。肯能有缺陷。DBGRID1设为多选。procedure TForm1.DBGrid1CellClick(Column: TColumn);
    var i:integer;
    s:real;
    b:tbookstr;
    begin
          s:=0;
          b:=query1.book;
          query1.disableControls;
          query1.First;
          for i:=1 to query1.RecordCount do
          begin
               if dbgrid1.SelectedRows.CurrentRowSelected then
               s:=query1.fieldbyname('Length (cm)').asfloat+s;
               query1.Next;
          end;
          edit1.Text:=floattostr(s);
          query1.EnableControls;
          query1.book:=b;
    end;
      

  3.   

    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    var i:integer;
    s:real;
    b:tbookstr;
    begin
          s:=0;
          b:=query1.book;
          query1.disableControls;
          for I := 0 to DBGrid1.SelectedRows.Count - 1 do 
          begin
              query1.Book := DBGrid1.SelectedRows.items[I];
              s:=query1.fieldbyname('Length (cm)').asfloat+s;
          end;
          edit1.Text:=floattostr(s);
          query1.EnableControls;
          query1.book:=b;
    end;