- Код: Выделить всё
procedure TForm1.StringGrid1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
r : integer;
c : integer;
begin
StringGrid1.MouseToCell(X, Y, C, R);
with StringGrid1 do
begin
if ((Row <> r) or(Col <> c)) then
begin
Row := r;
Col := c;
Application.CancelHint;
StringGrid1.Hint :=stringgrid1.Cells[c,r];
end;
end;
end;
Здесь при наведении мышки на ячейку, значениям stringgrid.col и stringgrid.row присваиваются текущие координаты ячейки относительно координат положения мыши. Минус этого способа в том что когда значения stringgrid.col и stringgrid.row присваиваются.. вызывается метод stringgrid1.click и если назначено какое либо действие для клика по ячейки то оно выполняется по мере проведения мыши над ячейкой. Если убрать присваивание этих значений, то хинт присваивается только при принудительном клике на ячейку и последующем движении мыши. но хинт нужен не выделенной ячейки а ячейки под мышью. А так как хинт равен значению выделенной ячейки то он показывается только если вернуть мышь над выделенную ячейку. Есть ли способ вызывать хинт с текстом ячейки над каждой строкой без принудительного клика по ней? Либо как можно заблокировать выполнение stringgrid.click при движении мыши над ячейкой, но что бы это не мешало вызывать метод клика нажатием левой кнопки мыши?