Einzelnen Beitrag anzeigen

Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#1

Markieren mit Shift + Mausklick im DBGrid

  Alt 22. Feb 2008, 08:18
Um in einem DBGrid mehrere Datensätze wie z.B. in Excel durch Klicken auf den ersten und letzten Datensatz bei gedrückter Shift-Taste zu markieren, muss man folgenden Quellcode in den OnMouseUp-Event des DBGrid einfügen:

Delphi-Quellcode:
procedure TMyForm.DBGridMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: integer);
var
  LastPos: Integer;
  TempBookmark: Integer;
  Grd: TDBGrid;
begin
  Grd := TDBGrid(Sender);

  if (Shift = [ssShift])
    and (Button = mbLeft)
    and (dgMultiSelect in Grd .Options)
    and (FirstPosMouse > 0) then
  begin
    LastPos := Grd.DataSource.DataSet.RecNo;
    with Grd.DataSource.DataSet do
    begin
      DisableControls;
      Grd.DataSource.DataSet.MoveBy(FirstPosMouse - LastPos);
      repeat
        Grd.SelectedRows.CurrentRowSelected := True;
        if (FirstPosMouse < LastPos) then
          Next
        else
          Prior;
        TempBookmark := Grd.DataSource.DataSet.RecNo;
      until (TempBookmark = LastPos);
      EnableControls;
    end;
  end
  else
    FirstPosMouse := Grd.DataSource.DataSet.RecNo;
end;
Zu erwähnen sei noch, das FirstPosMouse eine globale Variable sein muss.
  Mit Zitat antworten Zitat