Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

ProgressBar, который отрисовывает линейку програсса в Статусбаре   Найти похожие ветки 

 
lehich   (2005-08-24 11:18) [0]

помогите плыз... скачал компонент из альтернативной кладовки... добавил его через Add file to project прописал в Unit1
uses VisSTProgressBar;
а в VisSTProgressBar
uses Unit1;

в инструкции написано:
"
Невизуальный компонент - ProgressBar, который отрисовывает линейку програсса в Статусбаре. Для настройки нужно указать StatusBar, в котором будет отрисовка и PanelIndex - индекс панели в статусбаре. Работает как в обычном ProgressBar, оптимизировано на отрисовку изменений. Часть кода взято из примеров. Freeware.
"

но нифига понять не могу где и чего менять? :-(((

дабы не захламлять форум выложу просто ссылку на скачивание:
http://kladovka.net.ru/download.cgi?id=41

подскажите что нужно еще дополнительно изменить?

Заранее премного благодарен!!!


 
Alexander Panov ©   (2005-08-24 12:17) [1]

Вообще, для отображения линейки в TStatusBar, как в TGauge, необязательно искать дополнительных компонент. Дело весьма нехитрое.

Нужно заменить обработчик события OnDrawPanel.
Для одной из панелей установить свойство Style в psOwnerDraw и отрисовывать ее самому.

Вот выдернул из рабочего проекта. Все несложно, просто разберись:

В классе формы:

 private
   FProgress: Integer;
   procedure ResizeSbm;
 public
   procedure ShowProgress(Proz: Integer);
   procedure NextProgress;
   procedure ClearProgress;

procedure TForm1.ClearProgress;
begin
 ShowProgress(-1);
end;

procedure TForm1.ShowProgress(Proz: Integer);
begin
 FProgress := Proz;
 sbm.Repaint;
end;

procedure TForm1.NextProgress;
begin
 Inc(FProgress);
 sbm.Repaint;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
 ResizeSbm;
end;

procedure TForm1.ResizeSbm;
begin
 sbm.Panels[1].Width := sbm.Width-
   sbm.Panels[0].Width-
   sbm.Panels[2].Width-
   sbm.Panels[3].Width-
   sbm.Panels[4].Width-20;
end;

procedure TForm1.tmTimeTimer(Sender: TObject);
begin
 Sbm.Panels[0].Text := FormatDateTime("dd.mm.yyyy hh:nn:ss",now);
end;

procedure TForm1.sbmDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
 const Rect: TRect);
var
 R: TRect;
 pz: Integer;
begin
 if Panel=sbm.Panels[1] then
 begin
   if FProgress=-1 then
   begin
     sbm.Canvas.Brush.Color := sbm.Brush.Color;
     sbm.Canvas.FillRect(Rect);
     sbm.Panels[2].Text := "";;
     Exit;
   end;

   pz := Trunc((Rect.Right-Rect.Left)*(FProgress/100));
   if FProgress>100
     then FProgress := 0;

   if FProgress=0 then
   begin
     sbm.Canvas.Brush.Color := sbm.Brush.Color;
     sbm.Canvas.FillRect(Rect);
     sbm.Panels[2].Text :=IntToStr(FProgress)+" %";
     Exit;
   end;

   R := Rect;
   R.Right := R.Left+pz;
   sbm.Canvas.Brush.Color := clBlue;
   sbm.Canvas.FillRect(R);
   sbm.Panels[2].Text :=IntToStr(FProgress)+" %";
 end
 else inherited;
end;



 
asmi ©   (2005-08-24 12:22) [2]

//lehich   (24.08.05 11:18)
//Невизуальный компонент - ProgressBar
Имелось в виду на форму кидается в виде пиктограмки.

Вообщем делай так:
Выбирай Component -> Install Component...
Закладка Into new package
Unit file name: <путь к файлу>\VisSTProgressBar.pas
Package file name: Visor (Или что душе угодно)
OK
Compile
Install
Вуаля, Close All, File -> New -> Application, кидаешь компоненту с вкладки Visor, и наслаждаешься своим прогресиком

ЗЫ Надеюсь ты знал как устанавливать компоненты в Delphi :-)


 
Игорь Шевченко ©   (2005-08-24 12:54) [3]


> Вообще, для отображения линейки в TStatusBar, как в TGauge,
> необязательно искать дополнительных компонент. Дело весьма
> нехитрое.


Это точно. Назначить ProgressBar или Gauge BoundsRect и Parent

procedure TfMain.ShowProgress;
var
 R: TRect;
begin
 SetRect(R, 0, 3, StatusBar.ClientWidth, Pred(StatusBar.ClientHeight));
 if WindowState <> wsMaximized then
   Dec(R.Right, StatusBar.ClientHeight);
 with ProgressBar do begin
   BoundsRect := R;
   Parent := StatusBar;
   Visible := true;
 end;
end;


 
lehich   (2005-08-24 18:08) [4]

всем огромный респект!!!

> asmi ©   (24.08.05 12:22) [2]

ступил... думал не так подключать его :-))) спасибо!!!

> Alexander Panov ©   (24.08.05 12:17) [1]

сенкс! фактически и не работал никогда с самостоятельной отрисовкой... буду ковырять выложенный код! еще раз спасибо!!!

> Игорь Шевченко ©   (24.08.05 12:54) [3]

спасибо большое! буду разбираться с выложенным... :-)))



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

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

Наверх




Память: 0.48 MB
Время: 0.045 c
3-1123481851
Layner
2005-08-08 10:17
2005.09.18
Как удалить БДЕ


2-1123769274
Гость22
2005-08-11 18:07
2005.09.18
Как при запуске DBNavigator скрыть некоторые кнопки?


3-1123565477
Shopot
2005-08-09 09:31
2005.09.18
ADO Query и SQL Server. Проблемы с памятью.


14-1125045509
Ega23
2005-08-26 12:38
2005.09.18
Воистину мудро


2-1123688945
pasha_golub
2005-08-10 19:49
2005.09.18
FreePascal