0

我知道 JVCL 中唯一具有自动隐藏功能(固定停靠客户端)的停靠样式是 JvDockVSNetStyle。我正在使用它,但我无法设置非活动固定窗格选项卡的大小。隐藏时,选项卡不显示窗格的标题,仅显示活动窗格的名称。抱歉,我无法发布示例图片,因为这是我的第一个问题。

在对象检查器中有一个名为 ChannelOption 的选项,带有 ActivePaneSize 属性。有没有办法设置非活动窗格大小以便显示其名称?或者,也许我缺少另一种具有相同功能的码头风格?

我正在使用 C++Builder 和 JVCL 3.45。

4

2 回答 2

1

我通过注释掉这些代码部分来做到这一点:

procedure TJvDockVSChannel.GetBlockRect(Block: TJvDockVSBlock; Index: Integer;
  var ARect: TRect);
var
  BlockWidth: Integer;
begin
// HERE 

//  if Block.VSPane[Index] <> Block.ActivePane then
//    BlockWidth := Block.InactiveBlockWidth
//  else
    BlockWidth := Block.ActiveBlockWidth;

<snip>



procedure TJvDockVSChannel.Paint;
var
  I: Integer;

<snip>

  begin
    VisiblePaneCount := 0;
    for I := 0 to Block.VSPaneCount - 1 do
    begin
      if not Block.VSPane[I].FVisible then
        Continue;

      GetBlockRect(Block, I, DrawRect);
      Canvas.Brush.Color := TabColor;
      Canvas.FillRect(DrawRect);
      Canvas.Brush.Color := clGray;
      Canvas.FrameRect(DrawRect);

      AdjustImagePos;
      Block.FImageList.Draw(Canvas, DrawRect.Left, DrawRect.Top, I, dsTransparent, itImage);

// HERE 
//      if Block.ActivePane = Block.VSPane[I] then
      begin
        if Align in [alTop, alBottom] then
          Inc(DrawRect.Left, Block.InactiveBlockWidth)
        else
        if Align in [alLeft, alRight] then
        begin
          Inc(DrawRect.Top, Block.InactiveBlockWidth);
          if Align = alLeft then
            DrawRect.Left := 15
          else
            DrawRect.Left := 20;
          DrawRect.Right := DrawRect.Left + (DrawRect.Bottom - DrawRect.Top);
        end;
        Canvas.Brush.Color := TabColor;
        Canvas.Pen.Color := clBlack;

        Dec(DrawRect.Right, 3);

        OldGraphicsMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
        Canvas.Brush.Style := bsClear;
// HERE (changed options)
        DrawText(Canvas.Handle, PChar(Block.VSPane[I].FDockForm.Caption), -1, DrawRect, {DT_END_ELLIPSIS or} DT_NOCLIP);
于 2012-11-19T23:34:55.730 回答
0

TJvDockServer 中有一个名为 DoFinishSetDockPanelSize 的事件。

在您为该事件创建的函数中,您可以使用 Dockpanel 访问表单的大小。可能有一种方法可以从这里设置选项卡的大小。

于 2012-11-05T09:51:09.200 回答