delphi – JvDockTabPageControl:在标签鼠标悬停上显示提示表单
发布时间:2020-12-15 09:15:10 所属栏目:大数据 来源:网络整理
导读:我在JvDocking页面控件中有许多表格,但是标签太小而无法显示整个表单标题. 无论如何,当标签悬停时,是否显示包含标签文本的提示? 我得到的最接近的是每个表格的提示: TJvDockVIDTabPageControl(Form).Pages[i].Hint := 'hint'; 以及整个标签面板上的一个提
我在JvDocking页面控件中有许多表格,但是标签太小而无法显示整个表单标题.
无论如何,当标签悬停时,是否显示包含标签文本的提示? 我得到的最接近的是每个表格的提示: TJvDockVIDTabPageControl(Form).Pages[i].Hint := 'hint'; 以及整个标签面板上的一个提示: TJvDockVIDTabPageControl(Form).Panel.Hint := 'hint'; 解决方法
您无法使用提示,因为当您在选项卡上导航时,它似乎不会刷新提示.因此,您需要覆盖TJvDockTabPanel.MouseMove()并执行以下操作:
inherited MouseMove(Shift,X,Y) Index := GetPageIndexFromMousePost(X,Y) // Your code here if (Index > -1) then begin // Strip hotkey '&' out. Hint := StringReplace(Page.Pages[Index].Caption,'&','',[rfReplaceAll]); Application.ActivateHint(ClientToScreen(Point(X,Y))); end; 您可以分叉JvDockVIDStyle.pas并进行更改,或者将其子类化以提供您自己的功能,然后将该类注入您的dockstyle.这是一个粗略的例子: unit JvDockExtVIDStyle; interface uses JvDockVIDStyle,Classes; type TJvDockExtTabPanel = class(TJvDockTabPanel) protected procedure MouseMove(Shift: TShiftState; X,Y: Integer); override; end; TJvDockExtVIDTabPageControl = class(TJvDockVIDTabPageControl) public constructor Create(AOwner: TComponent); override; end; implementation uses Forms,SysUtils; { TJvDockExtVIDTabPageControl } constructor TJvDockExtVIDTabPageControl.Create(AOwner: TComponent); begin inherited Create(AOwner); //Override TabPanel with our subclassed version TabPanelClass := TJvDockExtTabPanel; end; { TJvDockExtTabPanel} procedure TJvDockExtTabPanel.MouseMove(Shift: TShiftState; X,Y: Integer); var Index : Integer; begin inherited MouseMove(Shift,Y); Index := GetPageIndexFromMousePos(X,Y); if (Index > -1) then begin Hint := StringReplace(Page.Pages[Index].Caption,[rfReplaceAll]); Application.ActivateHint(ClientToScreen(Point(X,Y))); end; end; 然后,您可以在主窗体中创建它,通过覆盖dock样式的TabDockClass来使用我们的子类.像这样: DockStyle.TabDockClass := TJvDockExtVIDTabPageControl; DockServer.DockStyle := DockStyle; 这也适用于VSNET风格.只需将VID替换为VSNet,无论它出现在哪里,都可以从TJvDockVSNetTabPanel而不是TJvDockTabPanel继承 更新 现在JVCL主干中有一个更新,它将执行此操作.更新组件并将dock样式上的ShowTabHints属性设置为true.或者在代码中执行. MyDockStyle.ShowTabHints := True; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |