Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
7-97051
ReYken
2002-11-19 11:00
2003.01.30
Как узнать размер и частоту экрана?


1-96692
Fill
2003-01-21 20:42
2003.01.30
Delphi-Excel


3-96606
mate
2003-01-13 17:44
2003.01.30
Выделение строки в DBGrid


3-96629
mate
2003-01-14 10:17
2003.01.30
DBGrid


14-96990
RV
2003-01-13 10:34
2003.01.30
да, Всех с Новым Годом!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский