Выделение строки TGrid в коде

У меня есть обычай TGrid контроль, который я пытаюсь сделать так, чтобы при наведении курсора мыши на строку эта строка выделялась. Строки автоматически подсвечиваются, если я использовал клавиши со стрелками для навигации по сетке. Однако я не уверен, как повторить этот эффект для навигации с помощью мыши.

В настоящее время у меня есть функция MouseMove, которая может определить, над какой строкой сетки находится мышь.

void __fastcall TFmSearchBar::GridMouseMove(TObject *Sender, TShiftState Shift, float X, float Y)
{
int rowSelected = FGrid->RowByPoint(X, Y);

if(rowSelected >= FGrid->RowCount)
rowSelected = FGrid->RowCount - 1;

if(rowSelected != -1)
{
FGrid->SelectRow(rowSelected);
}
}

Я изначально думал, используя SelectRow Функция достигла бы желаемого эффекта, однако при использовании этого метода ничего не происходит. Дополнительно я попробовал использовать

FGrid->SelectCell(0, rowSelected);

который тоже не работал.

Я подтвердил, что получаю правильную строку из функции, установив текст строки жирным шрифтом, когда мышь наводит курсор на него, используя

FGrid->RowObjects[rowSelected]->SetBold();

0

Решение

Вы должны включить следующие параметры для компонента TGrid:

1) RowSelect = True
2) AlwaysShowSelection = True

Протестировано с Delphi XE8 — работает отлично. Мой код:

procedure TForm1.Grid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
begin
Grid1.SelectRow(Grid1.RowByPoint(X, Y));
end;

если вы хотите, я мог бы предоставить вам файл DFM либо.

1

Другие решения