![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ProgressBar в ListView [D7, WinXP]
faost © (2005-01-31 19:09:00)У меня есть следующий код:
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!
faost (2005-01-31 20:39:00) [1]Спасибо!
Defunct (2005-01-31 20:10:00) [2]примерчик.
добавьте в 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 19:55:00) [3]А как именно? Помоги ссылкой или примером кода
Defunct (2005-01-31 19:51:00) [4]ну уж поэкперементируйте. видимо придется ProgressBar отрисовывать вручную (во всяком случае тормозить будет меньше).
faost (2005-01-31 19:43:00) [5]А как реагировать на событие, когда происходит скроллинг ListView?
Defunct (2005-01-31 19:37:00) [6]Включаем OwnerDraw := True
и отрисовываем каждый элемент вручную по событию OnDrawItem
faost (2005-01-31 19:28:00) [7]Нужно, чтоб в ListView был целый столбец ProgressBar-ов, который, естественно, должен будет перемещаться вместе и с другими столбцами.
Defunct (2005-01-31 19:13:00) [8]А с чего вдруг ему перемещаться?