4
你好,請有沒有包含這些2個鼠標事件的任何VirtualStringTree版本:德爾福VirtualStringTree OnMouseEnter在和OnMouseLeave在
OnMouseEnter
和OnMouseLeave
?
非常感謝
你好,請有沒有包含這些2個鼠標事件的任何VirtualStringTree版本:德爾福VirtualStringTree OnMouseEnter在和OnMouseLeave在
OnMouseEnter
和OnMouseLeave
?
非常感謝
這些事件很容易添加,如果你的字符串樹還不支持它們。
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's 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;
我將調用添加到'繼承'到你的兩個消息處理程序。如果沒有這些,你會中斷控制,因爲底層控制已經有這些消息的處理程序。 –
@DavidHeffernan謝謝大衛。 – Shannon