
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Сообщ.
#1
,
|
|
|
Есть несколько возможностей:
1) сделать ProgressBar наследником StatusBar в runtime: ![]() ![]() 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; //with; pb.Visible:= True; .... end; 2) сделать ProgressBar невидимым и отрисовывать его каждый раз при перерисовке статусбара (нужно не забыть поставить у нужной панели Style := psOwnerDraw). ИМХО, лучший вариант. ![]() ![]() 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; 3) Использовать наследник статусбара, позволяющий вставлять любые контролы: ![]() ![]() unit adStatba; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls; type TAdrockStatusBar = class(TStatusBar) public сonstructor Create(AOwner: TComponent); override; end; procedure Register; implementation сonstructor TAdrockStatusBar.Create(AOwner: TComponent); begin inherited Create(Aowner); ControlStyle := ControlStyle + [csAcceptsControls]; end; procedure Register; begin RegisterComponents('Adrock', [TAdrockStatusBar]); end; end. |