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

Вниз

ListView и ProgressBar, как совместить?   Найти похожие ветки 

 
Filat ©   (2003-01-20 12:27) [0]

Подскажите, как сделать стобы в ListView в одной из колонок был ProgressBar, типа как ReGet, когда он показывает % загрузки файлов? Мне надо для показа процента архивирования файлов, т.к. у них размер до архивации > 200Мб.
Спасибо!


 
Filat ©   (2003-01-20 19:55) [1]

Ну неужели никто не знает? Такого же быть не может :(


 
Mr.X ©   (2003-01-20 20:26) [2]

Способ глупый но может поможет:
progressbar1.parent:=listview1;
а дальше left и top


 
Моджахед   (2003-01-20 22:06) [3]

2 Mr.X ©
Способ, наверное, не самый глупый из всех возможных, но глючить будет безбожно при прорисовке ;)


2 Filat
Два варианта, по возрастающей степени предпочтительности (имхо):
1) OwnerDraw в ListBox (довольно нелепо, поскольку придется произодить перерисовки слишком часто)
2) свой компонент.


 
Моджахед   (2003-01-20 22:08) [4]

"свой компонет", разумеется, это и без всяких, листбоксов и прогрессбаров.


 
Nick_N_A ©   (2003-01-21 06:04) [5]

bm:=TBitMap.Create;
bm.Width:=ProgressBar1.Width;
bm.Height:=ProgressBar1.Height;
ProgressBar1.Perform(wm_paint,bm.Canvas.Handle,0);
imageList1.Width:=ProgressBar1.Width;
imageList1.Height:=ProgressBar1.Height;
imageList1.Add(bm,nil);
bm.Free;

Создай массив картинок для него, и меняй их imageList1.Replace


 
Palladin ©   (2003-01-21 06:10) [6]

2 Nick_N_A
дык уж тогда проще на canvas рисовать... чего картинки то менять...


 
Игорь Шевченко ©   (2003-01-21 10:16) [7]

unit main;

interface

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

type
TThreadData = class
Thread : Integer; { тЁхьхээю }
Gauge : TGauge;
Progress : Integer;
end;

TfMain = class(TForm)
ListView: TListView;
Button: TButton;
procedure ListViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure ButtonClick(Sender: TObject);
private
FNextThread : Integer;
procedure AddThread (ThreadID : Integer);
function GetSubItemRect (AListView : TListView; AListItem : TListItem; SubItemIndex : Integer) : TRect;
public
{ Public declarations }
end;

var
fMain: TfMain;

implementation

{$R *.DFM}

procedure TfMain.ListViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Assigned(Item.Data) then
with TThreadData(Item.Data) do begin
Gauge.Progress := Progress;
// Gauge.Refresh();
end;
DefaultDraw := true;
end;

procedure TfMain.AddThread(ThreadID: Integer);
var
LI : TListItem;
ThreadData : TThreadData;
ARect : TRect;
begin
Inc(FNextThread);
LI := ListView.Items.Add();
LI.Caption := IntToStr(FNextThread);
ARect := GetSubItemRect(ListView, LI, 1);
ThreadData := TThreadData.Create();
ThreadData.Thread := FNextThread;
ThreadData.Progress := Random(100);
ThreadData.Gauge := TGauge.Create(Self);
with ThreadData.Gauge do begin
Parent := ListView;
ParentFont := false;
Left := ARect.Left;
Top := Succ(ARect.Top);
Width := ListView.Columns[1].Width;
Height := ARect.Bottom - ARect.Top - 1;
MaxValue := 100;
ForeColor := clNavy;
Visible := true;
end;
LI.Data := ThreadData;
end;

procedure TfMain.ButtonClick(Sender: TObject);
begin
AddThread(0);
end;

function TfMain.GetSubItemRect(AListView : TListView; AListItem : TListItem;
SubItemIndex: Integer): TRect;
var
I : Integer;
begin
Result := AListItem.DisplayRect(drBounds);
for I:=0 to Pred(SubItemIndex) do
Inc(Result.Left, ALIstView.Columns[I].Width);
end;

end.


 
Filat ©   (2003-01-21 20:39) [8]

Игорь Шевченко , спасибо попробую твой совет, что получится скажу.



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
7-97047
Оля
2002-11-18 12:56
2003.01.30
Как погасить экран?


1-96843
Kettle of delphi
2003-01-20 19:44
2003.01.30
RichEdit... Вопрос на тему


1-96810
Imshanya
2003-01-20 17:45
2003.01.30
Проблема с формами


9-96509
Lampo4ka
2002-08-08 10:12
2003.01.30
Где скачать DelphiX ?


1-96848
msoftware
2003-01-19 05:17
2003.01.30
Работа с TClipBoard