![]() |
ProgressBar in ListView wieder freigeben ??
Hallo
habe mir mit Hilfe des Forums in meiner Anwendung eine ProgressBar auf einem ListView erzeugt. Die Liste wird dann mit mehreren Zeilen gefüllt und er legt mir auch schön in Spalte 2 den Progressbar an. Nun möchte ich das Listview wieder mit Clear löschen.... Er löscht mir alle Inhalte des ListViews aber das problem ist das er mir aber trotzdem immernoch den ProgressBar im Listview für alle angelegten Zeilen anzeigt. Wie kann ich die Spalte im Listview wieder freigeben, sodass nach einem Clear das gesamte ListView leer ist ??? |
Re: ProgressBar in ListView wieder freigeben ??
Hi,
ich habe es immer so gemacht, dass ich die ProgressBars in einem Array verwalte, so kann ich sie per FreeAndNil einfach wieder freigeben. |
Re: ProgressBar in ListView wieder freigeben ??
Hallo
und wie hast du das gemacht ???? Ich meine wie hast du dann das ProgressBar auf dem ListView gebracht ??? Und wie hast du die in einem Array verwaltet ?? |
Re: ProgressBar in ListView wieder freigeben ??
Delphi-Quellcode:
Der Rest ergibst sich eigentlich von selber.
TProgressArray = array of TProgressbar
|
Re: ProgressBar in ListView wieder freigeben ??
hmm.....
Delphi-Quellcode:
so bekomme ich den ProgressBar auf das Listview. Folgendes wäre der Code wie ich eine Zeile lösche:
procedure TForm1.AddItemButtonClick(
Sender: TObject); const pbColumnIndex = 1; pbMax = 100; var li : TListItem; lv : TListView; pb : TProgressBar; pbRect : TRect; begin lv := ListViewEx1; //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
Delphi-Quellcode:
Der Code ist von
procedure TForm1.RemoveItemButtonClick(
Sender: TObject); var lv : TListView; li : TListItem; i, idx : integer; pb : TProgressBar; begin lv := ListViewEx1; li := lv.Selected; if li <> nil then begin idx := li.Index; TProgressBar(li.Data).Free; lv.Items.Delete(idx); //move bars up for i := idx to -1 + lv.Items.Count do begin li := lv.Items.Item[i]; pb := TProgressBar(li.Data); pb.Top := pb.Top - (pb.BoundsRect.Bottom - pb.BoundsRect.Top); end; end; end; //RemoveItemButtonClick ![]() Wie bekomme ich nun in einem Rutsch das ProgressBar aus dem ListView. Verstehe den Ansatz mit dem Array nicht.... |
Re: ProgressBar in ListView wieder freigeben ??
Ich sagte doch, nimm ein Array. Michael hat dir sogar beschrieben, wie das geht.
Delphi-Quellcode:
Als Index kannst du direkt den Index des Items nehmen, von dem die ProgressBar geöscht werden soll, da der ItemIndex bei 0 beginnt.
PBArray: array of TProgressBar;
// Länge des Arrays festlegen SetLength(PBArray, ListView1.Items.Count); // Hinzufügen: PBArray[MyIndex] := TProgresBar.Create(self); // oder nil oder was auch immer PBArray[MyIndex].Parent := ListView1; ... // Freigeben FreeAndNil(PBArray[MyIndex]); // oder PBArray[MyIndex].Free; Also nun müsstest du das aber alleine hinbekommen. ;) |
Re: ProgressBar in ListView wieder freigeben ??
Hallo
danke das wars was mir gefehlt hat.... Jetzt klappt es..... :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz