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

Вниз

ProgressBar в ListView?   Найти похожие ветки 

 
dracula ©   (2005-10-31 22:34) [0]

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

так добавляем в лист прогресбар,
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;

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


 
skiph ©   (2005-11-01 10:13) [1]

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


 
Amoeba ©   (2005-11-01 10:18) [2]

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


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

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


 
dracula ©   (2005-11-01 12:40) [4]

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

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

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


 
Lin7 ©   (2005-11-01 13:12) [5]


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

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

Удачи!


 
dracula ©   (2005-11-01 13:53) [6]

Всё решил проблему:
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



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

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

Наверх




Память: 0.48 MB
Время: 0.045 c
14-1131374953
oldman
2005-11-07 17:49
2005.11.27
Опрос. Кто вам мешает жить?


2-1131345089
John Doe
2005-11-07 09:31
2005.11.27
Область видимости и время жизни при рекурсии.


2-1131438558
DevMaster
2005-11-08 11:29
2005.11.27
TadvStringGrid (TMS) - проблемма с памятью


6-1123928891
0n!k
2005-08-13 14:28
2005.11.27
clientsocket no API ASync Lookup


4-1127738702
NikNet
2005-09-26 16:45
2005.11.27
Как изменить стандартные диалоги? Открыть/Закрыть.