2013-11-27 2 views
4

JvDocking 페이지 컨트롤에 여러 개의 양식 탭 도크가 있지만 탭이 너무 작아 전체 양식 캡션을 표시 할 수 없습니다.JvDockTabPageControl : 탭 마우스 오버시 힌트에 양식 캡션 표시

탭을 올리면 탭 텍스트가 포함 된 힌트가 표시됩니까?

내가 들어 왔 가장 가까운는 각 양식에 힌트 :

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

과 탭의 전체 패널에 하나의 힌트 :

TJvDockVIDTabPageControl(Form).Panel.Hint := 'hint'; 
+0

@TLama 예,하지만 전체 패널에 대한 하나의 힌트 만 표시합니다. 내 문제는 컨테이너 내의 다른 탭에 다른 힌트를 표시하려고합니다. – user3042297

+0

'ShowHint' 속성을 True로 설정하는 것을 잊었다 고 생각했습니다. 하지만 당신이 질문에 열거 한 것보다 다른 컨트롤에 대한 힌트를 설정하는 방법을 찾고 있다는 것을 깨달았습니다. 그 죄송합니다. – TLama

답변

3

당신은 그것을로, 힌트를 사용할 수 없습니다 탭을 탐색 할 때 힌트를 새로 고치는 것처럼 보이지 않습니다. 따라서 당신이 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에 클래스를 주입 . 우리의 서브 클래스 중 하나를 사용하도록 도크 스타일에 TabDockClass를 재정 의하여 생성

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; 

그런 다음 당신이 당신의 주요 형태를 구현할 수있는 방법은 다음과 같습니다의 대략적인 예입니다. 좋아요 :

DockStyle.TabDockClass := TJvDockExtVIDTabPageControl; 
DockServer.DockStyle := DockStyle; 

이것은 VSNET 스타일에서도 잘 작동합니다. 그냥이 나타나는 곳 VSNet와 VID를 교체하고이 작업을 수행 할 JVCL 트렁크에 업데이트가 지금이 TJvDockVSNetTabPanel에서 대신 업데이트

TJvDockTabPanel

의 상속합니다. 구성 요소를 업데이트하고 독 스타일의 ShowTabHints 속성을 true로 설정합니다. 또는 코드에서 수행하십시오.

MyDockStyle.ShowTabHints := True; 
관련 문제