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

Вниз

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

 
faost ©   (2005-01-31 19:09) [0]

У меня есть следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var
 r: TRect;
 pb: TProgressBar;
begin

 Listview1.ViewStyle         := vsReport;
 Listview1.Items.Add.Caption := "Text";

 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 := 30;
 Listview1.Items[i].Data := pb;

 Inc(i);
end;

Проблема в том, что при скроллинге ListView ProgressBar не перемещается вместе с другими столбцами ListView!


 
Defunct ©   (2005-01-31 19:13) [1]

А с чего вдруг ему перемещаться?


 
faost ©   (2005-01-31 19:28) [2]

Нужно, чтоб в ListView был целый столбец ProgressBar-ов, который, естественно, должен будет перемещаться вместе и с другими столбцами.


 
Defunct ©   (2005-01-31 19:37) [3]

Включаем OwnerDraw := True
и отрисовываем каждый элемент вручную по событию OnDrawItem


 
faost ©   (2005-01-31 19:43) [4]

А как реагировать на событие, когда происходит скроллинг ListView?


 
Defunct ©   (2005-01-31 19:51) [5]

ну уж поэкперементируйте. видимо придется ProgressBar отрисовывать вручную (во всяком случае тормозить будет меньше).


 
faost ©   (2005-01-31 19:55) [6]

А как именно? Помоги ссылкой или примером кода


 
Defunct ©   (2005-01-31 20:10) [7]

примерчик.
добавьте в ListView одну колонку.
ширину колонки поставьте ~200.
стиль vsReport.
OwnerDraw - true.

procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
 Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
 with TListView(Sender).Canvas do
 begin
   Font.Color := clBlack;
   Brush.Color := clWhite;
   TextRect(Rect, Rect.Left, Rect.Top, Item.Caption);
   Rect.Left := Rect.Left + TextWidth("col permanent size");
   if Rect.Left > Rect.Right then
      Rect.Left := Rect.Right -1;
   Brush.Color := clBlue;
   Rectangle( Rect.Left, Rect.Top+1, Rect.Left + Integer(Item.Data), Rect.Bottom-1);

 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i : integer;
begin
 for i := 0 to 100 do
 with ListView1.Items.Add do
 begin
   Caption := "Text "+IntToStr(i);
   Data := Pointer( Random(50) );
 end;
end;


 
faost ©   (2005-01-31 20:39) [8]

Спасибо!



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

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

Наверх




Память: 0.48 MB
Время: 0.028 c
1-1107111801
Lucifer
2005-01-30 22:03
2005.02.13
Добавление и удаление эл-ов PopurMenu в run-time


4-1104192071
Unleashed
2004-12-28 03:01
2005.02.13
Про Usb порты


4-1104092956
Neiron
2004-12-26 23:29
2005.02.13
Сигнатуры в PE файле


3-1105737158
Alex_S
2005-01-15 00:12
2005.02.13
А как отвязать запись от таблицы?


3-1105650552
Scained
2005-01-14 00:09
2005.02.13
КАК СВЯЗАТЬ ТАБЛИЦУ С ЗАПИСЬЮ!