@richard_boderich
Na ja, den kleinen Bug in meiner Lösung hättest Du ja auch selbst entfernen können
Einfach mal die Methode
CellInRange austauschen.
Delphi-Quellcode:
function TForm1.CellInRange(aGrid: TCustomDrawGrid; aCol, aRow: Integer
): Boolean;
var
Dummy, StartPoint, EndPoint: TGridCoord;
begin
Result := False;
StartPoint.X := aGrid.Col;
StartPoint.Y := aGrid.Row;
if aGrid.Selection.Left <> StartPoint.X then
EndPoint.X := aGrid.Selection.Left
else
EndPoint.X := aGrid.Selection.Right;
if aGrid.Selection.Top <> StartPoint.Y then
EndPoint.Y := aGrid.Selection.Top
else
EndPoint.Y := aGrid.Selection.Bottom;
if StartPoint.Y > EndPoint.Y then
begin
Dummy := StartPoint;
StartPoint := EndPoint;
EndPoint := Dummy;
end;
if aRow < StartPoint.Y then
Exit;
if aRow = StartPoint.Y then
if aCol < StartPoint.X then
Exit;
if aRow > EndPoint.Y then
Exit;
if aRow = EndPoint.Y then
if aCol > EndPoint.X then
Exit;
Result := True;
end;
...
...