TStatusBar+TProgressBar

Материал из DRKB

TStatusBar+TProgressBar[править | править код]


Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
ID: 00518



var
  pb: TProgressBar;
begin
  pb:= TProgressBar.Create(self);
  with pb do
  begin
    Parent := StatusBar1;
    Position := 30;
    Top := 2;
    Left := 0;
    Height := StatusBar1.Height - Top;
    Width := StatusBar1.Panels[0].Width - Left;
  end;
  pb.Visible := True;
end;


Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00519



unit adStatba;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;

type

  TAdrockStatusBar = class(TStatusBar)
  public
    { Public declarations }
    constructor Create(Aowner : TComponent); override;
  end;

procedure Register;

implementation

constructor TAdrockStatusBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csAcceptsControls];
end;

procedure Register;
begin
  RegisterComponents('Adrock', [TAdrockStatusBar]);
end;

end.


Это позволит вам разместить элемент управления в панели. Но этот способ не поддерживает использование вложенных панелей. Вероятно, вам также понадобиться выровнять элемент управления по правому краю. Не так это все сложно...


Сборник Kuliba


Source: Взято из Советов по Delphi от Валентина Озерова
ID: 00520



pgProgress положить на форму как Visible := false; StatusPanel надо OwnerDraw сделать и рефрешить, если Position меняется.


procedure TMainForm.stStatusBarDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
begin
  if Panel.Index = pnProgress then
  begin
    pgProgress.BoundsRect := Rect;
    pgProgress.PaintTo(stStatusBar.Canvas.Handle, Rect.Left, Rect.Top);
  end;
end;


Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00521



 with TProgressBar.Create(StatusBar1) do Parent := StatusBar1; 


Author: Song
ID: 00522