0

我想更改 ControlList 的提示,检测鼠标在哪一行,例如提示可以说“第 6 行”

我知道我可以使用 TStringList 执行此操作,如下例所示。

TStringList 示例:

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Col, Row: Integer;
begin
  StringGrid1.MouseToCell(X, Y, Col, Row);
  StringGrid1.Hint := IntToStr(Col) + '   ' + IntToStr(Row);
end; 

控制列表示例:

procedure TForm1.ControlList1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
    var
   Row: Integer;
    begin
       ControlList1.  <--------Looking for something like Mouse to Row
       ControlList1.Hint := IntToStr(Row);
    end;

仅供参考,在 ControlList BeforeDraw Item AIndex 中可用。获得 AIndex 或 Row 会很棒。

ControlList1BeforeDrawItem(
  AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
4

1 回答 1

4

TControlList为此公开了一个属性HotItemIndex

于 2021-12-04T13:34:19.607 回答