カスタムのアニメーション化された進行状況バーを描画することを目標にしていますVST
私の目標は、下の画像と同様の結果を描画することです。次のようなことを試みましたOnBeforeCellPaint
。
procedure TForm2.VTs1BeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
var
NewRect : TRect;
xOff, yOff : Integer;
ProgressBarRect: TRect;
Percents: Real;
DrawProgressBar: Boolean;
begin
//draw progress
Percents := 10; // 40%
// progressBar on Column 3
begin
// draw progressbar
ProgressBarRect.Left := 0;
ProgressBarRect.Top := CellRect.Top + 1;
ProgressBarRect.Right := round((CellRect.Right - CellRect.Left) * Percents) + CellRect.Left;
ProgressBarRect.Bottom := CellRect.Bottom - 1;
if (ProgressBarRect.Right - ProgressBarRect.Left) > 0 then
begin
TargetCanvas.Brush.Color := RGB(179,255,102);
TargetCanvas.FillRect(ProgressBarRect);
end;
// ProgressBarRect
inc(ProgressBarRect.Left);
inc(ProgressBarRect.Top);
dec(ProgressBarRect.Right);
dec(ProgressBarRect.Bottom);
if (ProgressBarRect.Right - ProgressBarRect.Left) > 0 then
begin
TargetCanvas.Brush.Color := RGB(221,255,187);
TargetCanvas.FillRect(ProgressBarRect);
end;
end;
end;
しかし、私は同じ結果を出すことはできず、次の画像と同じアプローチに到達することはできません:
それが私がコーディングで得た結果です:
プログレスバーはノードの横ではなくノードに沿って表示され、そのデザインは画像に示されているものと同じではありませんノードの黄色の長い背景が表示されます。ノードの左側に作成し、同じデザインにしたかったのです。私が上に投稿したアニメーション画像。