Вниз
Скачать: CL | DM;

ProgressBar to StatusBar   Найти похожие ветки 

← →
alikvp   (2004-12-02 14:55) [0]

Мне удалось поместить ProgressBar в StatusBar - в Ваших FAQ
мне удалось найти подсказку. Но проблема в том, что я не могу
ни в одну из панелей StatusBara занести любую текстовую информацию сразу перед работой ProgressBara или в процессе
работы ProgressBara. Более того, делаю Label на форме, дабы не
привязываться к StatusBary, но все равно во время работы
ProgressBara в ней ничего не видно. Если кто-нибудь сталкивался с этим, пожалуйста, подскажите - в чем мои ошибки.
(Delphi 7, Windows XP). Заранее лагодарен В.Алик.


← →
grom   (2004-12-02 19:25) [1]

unit Main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ExtCtrls, ComCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   StatusBar1: TStatusBar;
   Timer1: TTimer;
   procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
     Panel: TStatusPanel; const Rect: TRect);
   procedure Button1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
  Percent: Integer;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
 Panel: TStatusPanel; const Rect: TRect);
var s: String;
   TH: Integer;
   Rec: TRect;
   X: Integer;
   Y: Integer;
begin
 S := Format("%u%%",[Percent]);
 TH := (Rect.Right - Rect.Left) * Percent div 100;
 X := ((Rect.Right - Rect.Left) + StatusBar.Canvas.Font.Height * Length(s)) div 2;
 Y := ((Rect.Bottom - Rect.Top)-(StatusBar.Canvas.Font.size div 2))  div 2 ;

 StatusBar1.Canvas.Brush.Color := clWhite;
 Rec := Classes.Rect(Th,Rect.Top,Rect.Right,Rect.Bottom);
 StatusBar.Canvas.TextRect(Rec,x,y,s);
 {ðèñîâàíèå íå çàïîëíåííîé ÷àñòè ëèíåéêè}
 StatusBar.Canvas.Font.Color := StatusBar.Canvas.Brush.Color;
 StatusBar.Canvas.Brush.Color :=  clNavy;
 Rec := Classes.Rect(Rect.Left,Rect.Top,TH,Rect.Bottom);
 StatusBar.Canvas.TextRect(Rec,x,y,S);
 {ðèñîâàíèå íå çàïîëíåííîé ÷àñòè ëèíåéêè}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if Timer1.Enabled then
 Timer1.Enabled := not Timer1.Enabled;
Percent := 0;
StatusBar1.Invalidate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Percent = 100 then
 Percent := 0;
Percent := Percent + 1;
StatusBar1.Invalidate;
end;

end.
может это вам поможет


← →
alikvp   (2004-12-07 17:26) [2]

Спасибо за программку. Но она не решает проблему, т.е., даже при такой организации ProgressBara поместить текст в одну из свободных панелей StatusBara не получается. Буду думать.
Еще раз, Спасибо!
    В.Алик


← →
Александр Иванов ©   (2004-12-07 17:41) [3]

Я специально проверил, правда изменение Прогрессбара происходило по таймеру. Все работает. В первой панели находится


← →
Александр Иванов ©   (2004-12-07 17:41) [4]

Я специально проверил, правда изменение Прогрессбара происходило по таймеру. Все работает. В первой панели находится ProgressBar, ф во второй я вывожу позицию.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
1-1102050019
alexnmsk
2004-12-03 08:00
2004.12.19
Вставки на C++Builder


14-1101395700
kdv
2004-11-25 18:15
2004.12.19
о Delphi 2005, если интересно


14-1101800295
PVOzerski
2004-11-30 10:38
2004.12.19
Проблемы с модемом под XP - что делать?


9-1092893919
Zeqfreed
2004-08-19 09:38
2004.12.19
Фракталы, Шумы... есть линки?


14-1101493291
Fay
2004-11-26 21:21
2004.12.19
Нужен программер на пост. работу




   Наверх