JvDockTabPageControl:在选项卡鼠标悬停的提示中显示表单标题



JvDocking页面控件中有许多表单选项卡,但选项卡太小,无法显示整个表单标题。

当选项卡悬停在上面时,是否有显示包含选项卡文本的提示?

我得到的最接近的是每个表格上的提示:

TJvDockVIDTabPageControl(Form).Pages[i].Hint := 'hint';

以及整个选项卡面板上的一个提示:

TJvDockVIDTabPageControl(Form).Panel.Hint := '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, X, 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干线中有一个更新,它将做到这一点。更新组件并将停靠样式上的ShowTabHints属性设置为true。或者在代码中执行。

MyDockStyle.ShowTabHints := True;

相关内容

  • 没有找到相关文章

最新更新