如何在鼠标位置检测 ControlList 的行
How to detect the row of a ControlList at mouse position
我想更改 ControlList 的提示,检测鼠标悬停在哪一行,例如提示可以是 'Row 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);
TControlList 为此公开了一个 属性 HotItemIndex。
我想更改 ControlList 的提示,检测鼠标悬停在哪一行,例如提示可以是 'Row 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);
TControlList 为此公开了一个 属性 HotItemIndex。