Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
2-1131628633
Piero
2005-11-10 16:17
2005.11.27
Получить Handle запускаемого процесса


14-1131395620
ArtemESC
2005-11-07 23:33
2005.11.27
делаю сайт...


1-1130906088
GidraXP
2005-11-02 07:34
2005.11.27
Безопасность информации


14-1131357226
VladimirZ
2005-11-07 12:53
2005.11.27
D7 работает только у администратора


4-1127462761
Still Swamp
2005-09-23 12:06
2005.11.27
Уходит фокус после keybd_event VK_RIGHT




   Наверх