Главная страница
    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
9-96502
Some0ne.
2002-07-27 00:16
2003.01.30
Управление мышой


3-96540
rom900
2003-01-14 07:27
2003.01.30
Помогите, пожалуйста, составить SQL-запрос


14-97035
Дмитрий К.К.
2003-01-14 11:47
2003.01.30
Библиотека RX


14-96982
Berg
2003-01-13 10:17
2003.01.30
Необходимо создать дистрибутив для приложения


3-96550
RDA
2003-01-10 16:30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский