Текущий архив: 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