AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listview 3 Spalte Progressbar

Ein Thema von WizoHulk · begonnen am 22. Mai 2011 · letzter Beitrag vom 31. Mai 2011
Antwort Antwort
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#1

Listview 3 Spalte Progressbar

  Alt 22. Mai 2011, 20:23
Hallo an alle

ich habe ein Listview mit 3 Spalten. Nun möchte ich ich in der 3. Spalte eine Progessbar createn.
Mit diesen code funktioniert das erstellen ja schon mal ganz gut, aber wie bekomme ich die PB in die dritte Spalte?
Delphi-Quellcode:
procedure TFmTabelle.SetzteProgressBarAufLV(aListView: TListView; aListItem: TListItem);
const
  ProgBarColumnIndex = 1;
  ProgBarMax = 100;
var
  ProgBar : TProgressBar;
  pbRect : TRect;
begin
  ProgBar := TProgressBar.Create(nil);
  ProgBar.Style := pbstMarquee;
  ProgBar.Parent := aListView;
  aListItem.data := ProgBar;
  pbRect := aListItem.DisplayRect(drBounds);
  pbRect.Left := pbRect.Left + aListView.Columns[-1 + ProgBarColumnIndex].Width;
  pbRect.Right := pbRect.Left + aListView.Columns[ProgBarColumnIndex].Width;
  ProgBar.BoundsRect := pbRect;
end;
Listview füllen der Spalten

Delphi-Quellcode:
      Screen.Cursor := crHourGlass;
      {* Value in Listeditor *}
      li := ListView.Items.Add;
      li.Caption := sName; //erste Spalte Name
      li.SubItems.Add(sPfad); //zweite Spalte Pfad
      li.SubItems.Add(sDateigroesse); //dritte Spalte Größe
      SetzteProgressBarAufLV(ListView,li);

Geändert von WizoHulk (22. Mai 2011 um 20:50 Uhr)
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Listview 3 Spalte Progressbar

  Alt 22. Mai 2011, 22:11
So geht es:
Delphi-Quellcode:
procedure TFmTabelle.SetzteProgressBarAufLV(aListView: TListView; aListItem: TListItem);
const
  ProgBarMax = 100;
var
  ProgBar : TProgressBar;
  pbRect : TRect;
  //I: Integer;
begin
  ProgBar := TProgressBar.Create(nil);
  ProgBar.Style := pbstMarquee;
  ProgBar.Parent := aListView;
  aListItem.data := ProgBar;
  pbRect := aListItem.DisplayRect(drBounds);

  //Index geht ja mit 0 los xD Falls es max 3 sind.
  pbRect.Left := pbRect.Left + aListView.Columns[0].Width;
  pbRect.Left := pbRect.Left + aListView.Columns[1].Width;
  pbRect.Right := pbRect.Left + aListView.Columns[2].Width;
  
  //Wenn du es in die Letze Spalten immer haben willst mach es so:
  {
  for I := 0 to aListView.Columns.Count - 2 do
  pbRect.Left := pbRect.Left + aListView.Columns[I].Width;

  pbRect.Right := pbRect.Left + aListView.Columns[aListView.Columns.Count-1].Width;
  }


  ProgBar.BoundsRect := pbRect;
end;
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#3

AW: Listview 3 Spalte Progressbar

  Alt 28. Mai 2011, 01:57
hallo,

das erstellen der Progressbar in der drittenspalten klappt prima.

Jetzt habe ich aber das Problem das wenn ich diese wieder freigeben will mit

TProgressbar(Li.Data).Free Das ListItem verweist auf die 2 Spalte, obwohl die PB auf der Dritten Liegt.
Wie kann ich das ListItem in der 3. Spalte anknüpfen, das wenn ich die PB frei geben.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Listview 3 Spalte Progressbar

  Alt 28. Mai 2011, 06:01
Hallo,

Zitat:
Das ListItem verweist auf die 2 Spalte, obwohl die PB auf der Dritten Liegt.
Ein ListItem verweist nicht auf eine Spalte,
sondern auf eine Zeile.


Heiko
Heiko

Geändert von hoika (28. Mai 2011 um 06:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Listview 3 Spalte Progressbar

  Alt 28. Mai 2011, 11:00
Und ist der Index der Spalten nicht null basierend? Ich bin mir jetzt nicht sicher, ob die erste Spalte als Caption bezeichnet wird und dann die zweite Spalte als erste Subitemspalte oder gar als nullte Subitemspalte oder ob die erste Spalte Spalte null ist und dann die zweite als erste Spalte bezeichnet wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Listview 3 Spalte Progressbar

  Alt 29. Mai 2011, 14:58
Columns im Header ist genauso nullbasiert wie SubItems bei jedem Item.

Ich würde hier allerdings nicht so viele ProgressBars erzeugen. Man kann viel einfacher (einfacher u.a. wegen der nicht notwendigen Neupositionierung beim Scrollen) einfach Windows sagen, dass an der Stelle eine ProgressBar gezeichnet werden soll.
(Unit Themes, Befehl: ThemeServices.DrawElement mit teProgress als Element, ...)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#7

AW: Listview 3 Spalte Progressbar

  Alt 30. Mai 2011, 09:34
huhu

So viele PB's sollten es nicht werden.

Der sinn dahinter ist:

Es soll für DCPlusPlus einen Konfigurationsassistenten werden.
Der User muss Ordner Freigeben was in der ListView angezeigt wird.(also: Pfad Virtueller Name und Ordnergröße)
Die Ordnergröße muss noch berechnet werden was in einen Thread geschied. Und so lange der Thread läuft, läuft auch die PB.
Habe jetzt herausgefunden das beim Freigeben der PB auf eine Falsche adresse gezeigt wird was dadurch mir eine Exception bringt.

Kann man irgendwie nach den Namen der ProgressBar suchen und diese dann freigeben?
oder gibt es andere Möglichkeiten?
  Mit Zitat antworten Zitat
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#8

AW: Listview 3 Spalte Progressbar

  Alt 31. Mai 2011, 08:37
Das Problem hat sich erledigt.
Mann kann nur die Progressbar in einen Thread freigeben mit synchronize().
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz