[英]How to dynamically change a subitem's font when mouse hover over the subitem of TListView?
出於某種原因,我想在鼠標移到該子項上時突出顯示該子項,將其字體更改為[fsUnderline, fsBold]
。 但是,當鼠標移開時,子項目的字體將更改為其默認狀態。
但是我不知道如何實現這個功能。 誰能給我些幫助嗎?
是的,在David的建議下,我實現了MouseMove函數,該函數運行:
procedure TCnCustBuildForm.lstTaskMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
Rect:TRect;
I, J: Integer;
S: string;
ItemWidth: Integer;
begin
if taskRowNum > 0 then
for J := 0 to lstTask.Items.Count - 1 do
begin
Rect := lstTask.Items[J].DisplayRect(drBounds);
Rect.Left := Rect.Left + lstTask.Columns.Items[0].Width;
for I := 1 to lstTask.Columns.Count - 2 do
begin
S := taskContent[J, I];
ItemWidth := ListView_GetStringWidth(lstTask.Handle, PChar(S));
//if ItemWidth > lstTask.Column[I].Width then
// ItemWidth := lstTask.Column[I].Width;
if (taskContent[J, I] = 'error') and (x > Rect.Left) and (y > Rect.Top) and (x < Rect.Left + ItemWidth ) and (y < Rect.Bottom) then
begin
TListView(Sender).Cursor := crHandPoint;
//InvalidateRect(lstTask.Handle, Rect, True);
if lstTaskMouseMoveTrackingRect <> Rect then
begin
InvalidateRect(lstTask.Handle, lstTaskMouseMoveTrackingRect, True);
InvalidateRect(lstTask.Handle, Rect, True);
end;
lstTaskMouseMoveTrackingRect := Rect;
Exit;
end;
Rect.Left := Rect.Left + lstTask.Columns.Items[I].Width;
end;
end;
TListView(Sender).Cursor := crDefault;
InvalidateRect(lstTask.Handle, lstTaskMouseMoveTrackingRect, True);
end;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.