Hallo,
ich habe folgenden problem, ich erzeuge mit folgendem Code progressbars in einer listview.
Scrollt man aber nun nach unten bleiben die progressbars "stehen" und passen somit nicht mehr zum eintrag.
(Ich habe auch schon etliche beiträge gelesen, jedoch beziehen sich diese alle auf das änden der spaltengröße)
Delphi-Quellcode:
procedure AddProgressbar(lv:Tlistview);
var
r: TRect;
begin
r := lv.Items[lv.items.Count-1].DisplayRect(drBounds);
r.Left := r.Left + lv.columns[0].Width+lv.columns[1].Width+lv.columns[2].Width+lv.columns[3].Width+1;
r.Right := r.Left + lv.columns[4].Width-1;
pb:=TProgressbar.Create(Nil);
pb.Parent:=lv;
pb.BoundsRect:=r;
pb.Position:=0;
pb.Height:=pb.Height-1;
pb.Smooth:=true;
pb.DoubleBuffered:=true;
lv.Items[lv.items.Count-1].Data:=pb;
end;
Mit diesem Code ergibt sich das gleiche problem
Delphi-Quellcode:
procedure TForm1.AddItemButtonClick(
Sender: TObject);
const
pbColumnIndex = 1;
pbMax = 100;
var
li : TListItem;
lv : TListView;
pb : TProgressBar;
pbRect : TRect;
begin
lv := ListView1;
//create new ListItem (for the lv)
li := lv.Items.Add;
li.Caption := 'Item ' + IntToStr(lv.Items.Count);
//create a ProgressBar, place it in the second column
pb := TProgressBar.Create(nil);
pb.Parent := lv;
li.Data := pb;
pbRect := li.DisplayRect(drBounds);
pbRect.Left := pbRect.Left +
lv.Columns[-1 + pbColumnIndex].Width;
pbRect.Right := pbRect.Left +
lv.Columns[pbColumnIndex].Width;
pb.BoundsRect := pbRect;
end; //AddItemButtonClick
Gibt es eine möglichkeit die progressbars so hinzuzufügen, das diese autom. mitscrollen?