AINがコメントしたように、私もそれはバグだと思います。より正確には、タブを描画するTJvDockVSChannel.Paintのバグです(内部でタブはブロックと呼ばれます)。このようなブロックは、保護されたプロパティInactiveBlockWidthを持ち、名前の幅を制御することを推奨します。 このプロパティはタブ自体には問題ありませんが、キャプションはTJvDockVSChannel.Paintで同じ量だけ再度シフトされますが、これは問題のようです。
次のようにDockServerのOnFinishSetDockPanelSizeイベントを割り当てることによって、試すことができます:
type
TJvDockVSBlockAccess = class(TJvDockVSBlock);
procedure TMainForm.lbDockServer1FinishSetDockPanelSize(
DockPanel: TJvDockPanel);
var
Channel: TJvDockVSChannel;
Block: TJvDockVSBlockAccess;
i: Integer;
begin
if DockPanel is TJvDockVSNETPanel then
begin
Channel := TJvDockVSNETPanel(DockPanel).VSChannel;
for i := 0 to Channel.BlockCount - 1 do
begin
Block := TJvDockVSBlockAccess(Channel.Block[i]);
Block.InactiveBlockWidth := 100;
end;
end;
end;
これが今の保護されたプロパティですので、それは建設下され、その機能を示している可能性があります。 Jediの開発チームは、タブの幅を動的に処理するための完全な実装がないため、各非アクティブタブのグリフだけを描画することを決定しました。例えば。各タブの最小幅を設定できる必要があります。バー(つまり、そのバーが置かれているコンテナ)の高さが変わると、すべてのタブがそれに応じて拡大または縮小されます。
編集:柔軟な設計に
おかげで、あなたはDockServerのDockPanelClassプロパティを設定することによって、バグを回避することができます。 Styleプロパティを設定する前にプロパティを設定する必要があると思います。 InactiveBlockWidthが今度は仮想ではないGetBlockRect、にも使用されているので、全体のペイントルーチンをリライト:
type
TJvDockVSBlockAccess = class(TJvDockVSBlock);
THackJvDockVSNETPanel = class(TJvDockVSNETPanel)
public
constructor Create(AOwner: TComponent); override;
end;
THackJvDockVSChannel = class(TJvDockVSChannel)
protected
procedure Paint; override;
procedure ResetBlock; override;
procedure Resize; override;
end;
const
InactiveTabWidth = 100;
{ TMainForm }
procedure TMainForm.FormCreate(Sender: TObject);
begin
...
JvDockVSNetStyle1.DockPanelClass := THackJvDockVSNETPanel;
end;
{ THackJvDockVSNETPanel }
constructor THackJvDockVSNETPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
VSChannelClass := THackJvDockVSChannel;
end;
{ THackJvDockVSChannel }
procedure THackJvDockVSChannel.Paint;
var
I: Integer;
procedure DrawSingleBlock(Block: TJvDockVSBlockAccess);
var
DrawRect: TRect;
I: Integer;
OldGraphicsMode: Integer;
VisiblePaneCount: Integer;
procedure AdjustImagePos;
begin
if Align = alLeft then
begin
Inc(DrawRect.Left, 3);
Inc(DrawRect.Top, 4);
end
else if Align = alTop then
begin
Inc(DrawRect.Left, 4);
Inc(DrawRect.Top, 2);
end
else if Align = alRight then
begin
Inc(DrawRect.Left, 4);
Inc(DrawRect.Top, 4);
end
else if Align = alBottom then
begin
Inc(DrawRect.Left, 4);
Inc(DrawRect.Top, 3);
end;
end;
begin
VisiblePaneCount := 0;
for I := 0 to Block.VSPaneCount - 1 do
begin
if not Block.VSPane[I].Visible then
Continue;
GetBlockRect(Block, I, DrawRect);
Canvas.Brush.Color := TabColor;
Canvas.FillRect(DrawRect);
Canvas.Brush.Color := clGray;
Canvas.FrameRect(DrawRect);
AdjustImagePos;
Block.ImageList.Draw(Canvas, DrawRect.Left, DrawRect.Top, I);
if Align in [alTop, alBottom] then
Inc(DrawRect.Left, 24)
else if Align in [alLeft, alRight] then
begin
Inc(DrawRect.Top, 24);
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;
DrawText(Canvas.Handle, PChar(Block.VSPane[I].DockForm.Caption), -1,
DrawRect, DT_END_ELLIPSIS or DT_NOCLIP);
SetGraphicsMode(Canvas.Handle, OldGraphicsMode);
Inc(VisiblePaneCount);
end;
if VisiblePaneCount > 0 then
CurrentPos := CurrentPos + BlockInterval;
end;
begin
ResetBlock;
CurrentPos := BlockStartOffset;
for I := 0 to BlockCount - 1 do
DrawSingleBlock(TJvDockVSBlockAccess(Block[I]));
end;
procedure THackJvDockVSChannel.ResetBlock;
var
I: Integer;
begin
inherited ResetBlock;
for I := 0 to BlockCount - 1 do
TJvDockVSBlockAccess(Block[I]).InactiveBlockWidth := InactiveTabWidth;
end;
procedure THackJvDockVSChannel.Resize;
begin
{ Here you could widen or narrow the tabs according the total space and
depending on the number of tabs }
inherited Resize;
end;
あなたが画像を含む場合、私は、あなたがこの質問への答えを得るであろうと思いますあなたが達成したい仕事の – RRUZ
どうすればいいですか?あなたが教えてくれれば:-) –
http://meta.stackexchange.com/questions/75491/how-to-upload-an-image-to-a-post – RRUZ