TTabSheet在Delphi中提示
发布时间:2020-12-15 04:22:08 所属栏目:大数据 来源:网络整理
导读:我想要一个TPageControl和一些TTabSheets,当我依次悬停在每个标签上时,“每个标签页”工具提示提示可见. 有没有办法在Delphi 2009中获得这种效果? 解决方法 只需挂钩页面控件的鼠标移动事件,并使用TabAtPos属性来确定鼠标悬停在哪个选项卡上.然后将该选项卡
我想要一个TPageControl和一些TTabSheets,当我依次悬停在每个标签上时,“每个标签页”工具提示提示可见.
有没有办法在Delphi 2009中获得这种效果? 解决方法
只需挂钩页面控件的鼠标移动事件,并使用TabAtPos属性来确定鼠标悬停在哪个选项卡上.然后将该选项卡的提示分配给页面控件的提示属性.
procedure TForm.PageMouseMove(Sender: TObject; Shift: TShiftState; X,Y: integer); var tabindex: integer; begin tabindex := PageControl.IndexOfTabAt(X,Y); if (tabindex >= 0) and (PageControl.Hint <> PageControl.Pages[tabindex].Hint) then begin Application.CancelHint; PageControl.Hint := PageControl.Pages[tabindex].Hint; PageControl.ShowHint := true; end; end; 当鼠标直接从一个选项卡移动到另一个选项卡时,CancelHint / ShowHint将负责更新提示窗口. 当鼠标直接从一个标签移动到另一个标签时,下面改进但丑陋的版本也暂时将HintPause更改为0,以便立即重新显示提示. (解决方案的“丑陋”部分转到Application.ProcessMessages调用,该调用强制在恢复HintPause之前处理提示消息.) procedure TForm.PagesMouseMove(Sender: TObject; Shift: TShiftState; X,Y: integer); var hintPause: integer; tabindex: integer; begin tabindex := PageControl.IndexOfTabAt(X,Y); if (tabindex >= 0) and (PageControl.Hint <> PageControl.Pages[tabindex].Hint) then begin hintPause := Application.HintPause; try if PageControl.Hint <> '' then Application.HintPause := 0; Application.CancelHint; PageControl.Hint := PageControl.Pages[tabindex].Hint; PageControl.ShowHint := true; Application.ProcessMessages; // force hint to appear finally Application.HintPause := hintPause; end; end; end; 要隐藏主页面主体上的提示,请将以下方法分配给页面控件的OnMouseLeave事件. procedure TForm.PageMouseLeave(Sender: TObject); begin PageControl.Hint := ''; PageControl.ShowHint := false; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |