请问:怎么实现dbgrid可以用shift多选阿? dbgrid设置可以multiselect后,只能用ctrl键实现一条条多选,向用shift选择头尾实现多选,怎么实现阿?

解决方案 »

  1.   

    最好还是用dbgridEH控件吧,不行的话,只能自己写代码实现了onCellClick
      

  2.   

    转:
    dbgrid1的dgMultiSelect属性设为true
    private
      blSelect: Boolean;
      BookMark: TBookMark;procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var CurrNo: string;
    begin
      if Button = mbLeft then
        if not blSelect then
        begin
          BookMark := qrTableModify.GetBookMark;
          blSelect := True;
          Exit;
        end
        else if ssShift in Shift then
        begin
          CurrNo := qrTableModify.FieldByName('sNo').AsString;//sNo为关键字段
          qrTableModify.DisableControls;
          qrTableModify.GotoBook(BookMark);
          DBGrid1.SelectedRows.CurrentRowSelected := True;
          if CurrNo > qrTableModify.FieldByName('sNo').AsString then
            while CurrNo > qrTableModify.FieldByName('sNo').AsString do
            begin
              DBGrid1.SelectedRows.CurrentRowSelected := True;
              qrTableModify.Next;
            end
          else
            while CurrNo < qrTableModify.FieldByName('sNo').AsString do
            begin
              DBGrid1.SelectedRows.CurrentRowSelected := True;
              qrTableModify.Prior;
            end;
          qrTableModify.EnableControls;
          qrTableModify.FreeBook(BookMark);
          blSelect := False;
        end;
    end;