【问题标题】:Highlighting TGrid row in code在代码中突出显示 TGrid 行
【发布时间】:2015-06-08 13:53:32
【问题描述】:

我有一个自定义的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();

【问题讨论】:

    标签: c++ c++builder firemonkey c++builder-xe7 tgrid


    【解决方案1】:

    您必须为 TGrid 组件启用以下选项:

    1) 行选择 = 真 2) AlwaysShowSelection = True

    用 Delphi XE8 测试——工作正常。我的代码:

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

    如果你愿意,我也可以为你提供 DFM 文件。

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2013-05-01
      相关资源
      最近更新 更多