TStatusBar+TProgressBar |
Previous Top Next |
Вставить ProgressBar в StatusBar:
Вот эту функцию применять вместо стандартного Create
Code: |
Function CreateProgressBar(StatusBar:TStatusBar; index:integer):TProgressBar; {©Drkb v.3(2007): www.drkb.ru, ®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com} var findleft:integer; i:integer; begin result:=TProgressBar.create(Statusbar); result.parent:=Statusbar; result.visible:=true; result.top:=2; findleft:=0; for i:=0 to index-1 do findleft:=findleft+Statusbar.Panels[i].width+1; result.left:=findleft; result.width:=Statusbar.Panels[index].width-4; result.height:=Statusbar.height-2; end; |
©Drkb::00518
Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Code: |
var pb: TProgressBar; {©Drkb v.3(2007): www.drkb.ru} 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; //with; pb.Visible:= True; .... end; |
©Drkb::00519
Взято с Vingrad.ru http://forum.vingrad.ru
Code: |
unit adStatba;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;
type
TAdrockStatusBar = class(TStatusBar) private { Private declarations } protected { Protected declarations } public { Public declarations } Constructor Create(Aowner : TComponent); override; published { Published declarations } 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. |
Это позволит вам разместить элемент управления в панели. Но этот способ не поддерживает использование вложенных панелей. Вероятно, вам также понадобиться выровнять элемент управления по правому краю. Не так это все сложно...
©Drkb::00520
Взято из Советов по Delphi от Валентина Озерова
Сборник Kuliba
pgProgress положить на форму как Visible := false; StatusPanel надо OwnerDraw сделать и pефpешить, если Position меняется.
Code: |
procedure TMainForm.stStatusBarDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); begin {©Drkb v.3(2007): www.drkb.ru} if Panel.Index = pnProgress then begin pgProgress.BoundsRect := Rect; pgProgress.PaintTo(stStatusBar.Canvas.Handle, Rect.Left, Rect.Top); end; end; |
©Drkb::00521
Взято с Vingrad.ru http://forum.vingrad.ru
With TProgressBar.Create(StatusBar1) Do Parent:=StatusBar1;
©Drkb::00522
Автор: Song