Имеется код, в котором на события OnMouseMove выделяются ячейки в стринг грид:
procedure TFM_MAIN.SG_FunctionMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var MRect: TGridRect;
begin
with (Sender as TStringGrid) do begin
MouseToCell(X, Y, C, R);
if ( (R > 0) and (NRow > 0) and (NCol in [1, 2]) ) then
if ( Shift = [ssLeft] ) then begin
if ( NRow <= R ) then begin
MRect.Top := NRow;
MRect.Bottom := R;
end else begin
MRect.Bottom := NRow;
MRect.Top := R;
end;
if ( NCol <= C ) then begin
MRect.Right := C;
MRect.Left := NCol;
end else begin
MRect.Right := NCol;
MRect.Left := C;
end;
Selection := MRect;
end;
end;
В самом компоненте 3 столбца, 1 фиксированный, соответственно выделение идет только в оставшихся двух. NCol и NRow — Глобальные переменные, в которых хранятся координаты начальной ячейки. Проблема в следующем — если выделять ячейки снизу-вверх, то все нормально, начальная ячейка обведена пунктирной рамкой, остальные — выделены, но если выделять ячейки сверху-вниз, то пунктирной линией выделяется не только начальная, но и все ячейки, по которым проходит курсор. Может есть предложения как от этого избавится, как сделать чтобы только начальная ячейка выделялась пунктирной рамкой, а остальные выделением?