These events are easy enough to add if your row tree does not yet support them.
TMyImprovedVirtualStringTree = class(TSomeVirtualStringTree) private FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; // Watch for MouseEnter and MouseLeave messages... procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; protected // Provide MouseEnter() and MouseLeave() methods // for descendent controls to override if needed. procedure MouseEnter; virtual; procedure MouseLeave; virtual; published // Publish the events so they show in Delphi object inspecter. property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; implementation { TMyImprovedVirtualStringTree } procedure TMyImprovedVirtualStringTree.CMMouseEnter(var Message: TMessage); begin inherited; MouseEnter; end; procedure TMyImprovedVirtualStringTree.CMMouseLeave(var Message: TMessage); begin inherited; MouseLeave; end; procedure TMyImprovedVirtualStringTree.MouseEnter; begin if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure TMyImprovedVirtualStringTree.MouseLeave; begin if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); end;
source share