Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.19;
Скачать: 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 вся ветка

Текущий архив: 2004.12.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
3-1100679131
Garry_c
2004-11-17 11:12
2004.12.19
Применение Check-ов в БД или приложении


1-1102037045
Oitxr
2004-12-03 04:24
2004.12.19
скрытые файлы и папки


3-1100758149
Wowa-K
2004-11-18 09:09
2004.12.19
Помогите восстановить файл


14-1101669271
Maxim_S~~
2004-11-28 22:14
2004.12.19
помогите с треем!


4-1099405572
DSKalugin
2004-11-02 17:26
2004.12.19
Как выгрузить чужую DLL из памяти программным путем