Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли как нибудь в статус бар положить прогресс бар? [D5, Win95/98]


siliks ©   (2003-01-19 01:25:00) 

Можно ли как нибудь в статус бар положить прогресс бар?


Игорь Шевченко   (2003-01-20 15:34:00) [1]

Свои две копейки...
procedure TfrmMain.HideProgress;
begin
ProgressBar1.Visible := false;
ssBar.Invalidate();
end;


procedure TfrmMain.ShowProgress;
var I : Integer;
R : TRect;
begin
SetRect(R, 0, 0, 0, 0);
for I:=0 to Pred(ssBar.Panels.Count) do
Inc(R.Left, ssBar.Panels[I].Width);
R.Right := ssBar.ClientWidth;
if WindowState <> wsMaximized then
Dec(R.Right, ssBar.ClientHeight);
R.Top := 3;
R.Bottom := ssBar.ClientHeight;
with ProgressBar1 do begin
BoundsRect := R;
Parent := ssBar;
Visible := True;
end;
end;


Calm   (2003-01-20 15:09:00) [2]

> При создании компонента нужно еще: Visible:=true;

Что-то я не видел компонентов, которые при создании в run-time появлялись невидимыми. Но это так, к слову...

Когда работал под D5, использовал замечательную библиотеку компонентов Raize. Так там со строкой состояния можно было делатль почти все что угодно в design-time. Но под D6 не могу найти эти компоненты :(


Паша   (2003-01-20 15:02:00) [3]

Можно, только в дизайнере ничего не выйдет, надо ручками писать


han_malign   (2003-01-20 13:45:00) [4]

ну дак можно и без лишних компонентов -
with StatusBar1 do ControlStyle := ControlStyle + [csAcceptsControls];


Паша   (2003-01-20 13:31:00) [5]

Нашел как-то такую штуку, вроде работает:

{
ALStatusBar v1.0

(C)1999 Andrew Leigh
http://www.alphalink.com.au/~leigh/components
}
unit ALStatusBar;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;

type
TALStatusBar = class(TStatusBar)
public
constructor Create(AOwner: TComponent); override;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("ALComps", [TALStatusBar]);
end;

{ TALStatusBar }

constructor TALStatusBar.Create(AOwner: TComponent);
begin
inherited;

ControlStyle := ControlStyle + [csAcceptsControls];
end;

end.


Nick_N_A   (2003-01-20 06:40:00) [6]

При создании компонента нужно еще: Visible:=true;
У тебя случай сложнее:

#панели=0;
StatusBar1.panels[#панели].style:=psOwnerDraw;{Object Inspector}

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
Var
cn:TCanvas;
begin
cn:=TCanvas.Create;
cn.Handle:=GetDC(ProgressBar1.Handle);{У ProgressBar1 отсутствует Canvas, но мы его получили через hWnd}
if panel.Index=0{#панели} then
StatusBar1.Canvas.CopyRect(ProgressBar1.ClientRect,cn,
Classes.rect(3,3,100,15){координаты, должны совпадать с
координатами видимой части твоей секции с #панели}
);
cn.Handle:=0;
cn.Free;
end;


siliks   (2003-01-20 03:08:00) [7]

хмм. если честно, то я не совсем понял. Попробовал - у меня не получилось. То есть прогресс бар куда-то исчезает, но на статус баре ее тоже не видно .


Song   (2003-01-19 10:43:00) [8]

With TProgressBar.Create(Self) Do Parent:=StatusBar1;


Nick_N_A   (2003-01-19 06:49:00) [9]

По-секрету говоря в любой TWinControl можно ложить что угодно,
но иногда бывают проблемы с прорисовкой.

Client1.Parent:=Site1;
Client1.Left=0;
Client1.Top=0;


Наверх

Титульная страница Поиск, карта сайта Написать письмо