Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c