0

自動非表示機能(ドッククライアントを固定するため)があることがわかっているJVCLの唯一のドックスタイルはJvDockVSNetStyleです。使用していますが、非アクティブな固定ペインのタブのサイズを設定できません。非表示の場合、タブにはペインのタイトルは表示されず、アクティブなペインの名前のみが表示されます。申し訳ありませんが、これが私の最初の質問であるため、サンプル画像を投稿できません。

オブジェクトインペクターには、ActivePaneSizeプロパティを持つChannelOptionと呼ばれるオプションがあります。非アクティブなペインのサイズを設定して、その名前を表示できるようにする方法はありますか?それとも、同じ機能を持つ、私が見逃している別のドックスタイルがありますか?

私はC++BuilderとJVCL3.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 に答える