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

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

ProgressBar в ListView?


dracula ©   (2005-10-31 22:34:00) 

Проблема моя в следующем, вставляю прогресбары в листвиев, всё ок, но есть одно но, мне надо при изменении размеров колонки в листе менять размер прогрессбара, но это ещё победы (это я хоть представляю как надо делать), а при прокрутке листвиев?????????

так добавляем в лист прогресбар,
var
r: TRect;
pb: TProgressBar;
--------------------------------------------------
r := Listview1.Items[i].DisplayRect(drBounds);
r.Left  := r.Left + Listview1.columns[0].Width;
r.Right := r.Left + Listview1.columns[1].Width;
pb := TProgressBar.Create(Self);
pb.Parent := Listview1;
pb.BoundsRect := r;
pb.Position := 0;
pb.Height := 10;
Listview1.Items[i].Data := pb;

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


dracula   (2005-11-01 13:53:00) [1]

Всё решил проблему:
procedure TForm1.ListViewCustomDrawSubItem(Sender: TCustomListView;
 Item: TListItem; SubItem: Integer; State: TCustomDrawState;
 var DefaultDraw: Boolean);
var
 R: TRect;
begin
 if not ((Item.Index in [0, 2, 4]) and (SubItem = 1)) then Exit;
 ListView_GetSubItemRect(Item.Handle, Item.Index, SubItem, LVIR_BOUNDS, @R);
 case Item.Index of
   0: clListViewProgressBar1.Draw(ResourceState, Sender.Canvas, R);
   2: clListViewProgressBar2.Draw(ResourceState, Sender.Canvas, R);
   4: clListViewProgressBar3.Draw(ResourceState, Sender.Canvas, R);
 end;
 DefaultDraw := False;
end;


VirtualTreeView - посмотрю ещё что это такое, но вроде всё заработало как надо, с прокруткой и изменением размеров прогрессбара. Прогрессбар от clInetSuite. Кстати реальный прогресс - как в emule и edonkey


Lin7   (2005-11-01 13:12:00) [2]


> dracula ©   (01.11.05 12:40) [4]
> а может есть какой
> компонент листвиев с поддержкой прогрессбара?

VirtualTreeView
Немного тяжеловат и непривычен в использовании, но бесплатен и до чего хорош!! :)
Есть режимы TreeView, ListView и др.

Удачи!


dracula   (2005-11-01 12:40:00) [3]

нет он не двигается, не туды, не сюды =), а может есть какой компонент листвиев с поддержкой прогрессбара?

>А может лучше не вставлять всякие там прогрессбары, а просто
> имитировать их соответствующей прорисовкой в OnDraw?

к сожалению это не подходит, надо именно прогрессбар.


Игорь Шевченко   (2005-11-01 10:27:00) [4]

Так он вроде двигается сам при скролле ?


Amoeba   (2005-11-01 10:18:00) [5]

А может лучше не вставлятьвсякие там прогрессбары, а просто имитироватьих соответствующей прорисовкой в OnDraw?


skiph   (2005-11-01 10:13:00) [6]

Скорее всего нужно переопределить OnDraw в ListView.


Наверх

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