Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.043 c
1-1102096504
APXi
2004-12-03 20:55
2004.12.19
Проверка возможности создания объекта в конструкторе


4-1099300555
Laymer
2004-11-01 12:15
2004.12.19
Обои


1-1101906999
6h
2004-12-01 16:16
2004.12.19
Изменение иконки любого приложения


1-1101973372
denis24
2004-12-02 10:42
2004.12.19
горизонтальный скролинг у listbox


4-1099514502
dimaxx
2004-11-03 23:41
2004.12.19
Трабл с чтением файла в библиотеке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский