Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ProgressBar + Caption im TListView/VST (https://www.delphipraxis.net/114701-progressbar-caption-im-tlistview-vst.html)

kng 29. Mai 2008 18:50


ProgressBar + Caption im TListView/VST
 
Liste der Anhänge anzeigen (Anzahl: 1)
Tag,

Ich würde gerne sowas, wie auf dem Bild im Anhang in einer TListView oder im VST darstellen.
Allerdings nicht nur mit der Prozentanzeige, sondern einer beliebigen Aufschrift und die ProgressBar soll sich beim Resizen der Columns entsprechend anpassen.

Ist das überhaupt möglich in einer normalen TListView oder sollte man bei sowas lieber den VST vorziehen?

Wie kann man sowas am besten machen? :tongue:

himitsu 29. Mai 2008 22:14

Re: ProgressBar + Caption im TListView/VST
 
Wenn du dich selber um das Zeichnen kümmerst, dann wäre es auch mit einer normalen LV/TV möglich,

aber im VST ist dieses doch sozusagen schon fertig drin.
(irgendwo in den VST-Demos sollte es sich leicht finden lassen)

Nils_13 29. Mai 2008 22:19

Re: ProgressBar + Caption im TListView/VST
 
Ich würde an deiner Stelle erst die ListView nehmen. Dann mal ein bisschen schauen und wenn es nicht klappt, kann man immer noch die VirtualStringTree nehmen. Denn wenn du nicht allzu große Sachen machen willst, lohnt sich eine VST in meinen Augen nicht: 1% VST genutzt, 101% ListView wenn du es so willst. Die ListView ist eben kleiner, daher lieber das eine Prozent draufhauen statt die große VST reinzuhämmern.

generic 29. Mai 2008 22:25

Re: ProgressBar + Caption im TListView/VST
 
Die bessere Wahl ist der VST.

Im Entwickler 04/08 (ab 18.06. im Handel) sind die notwendigen Ereignisse erklärt.
Es ist wirklich ein leichtes, dass mit dem VST umzusetzen.

Wenn du nicht so lange warten willst, schau dir mal die folgenden Ereignisse an:
OnAfter*
OnBefore*

besonders "onAfterCellPaint"

VST lohnt sich immer!

littleDave 29. Mai 2008 22:44

Re: ProgressBar + Caption im TListView/VST
 
Ich weiß nicht welche Delphi-Version du benutzt und ob das von mir gleich angesprochene Problem in aktuellen Versionen immernoch vorhanden ist:

Borland hat bei der Kapselung von Device-Context der ListView in ein TCanvas irgendwie misst gebaut. Sobald du im OnCustomDrawXXX-Event das zeichnen per MoveTo/LineTo usw beginnst, verändert sich bei Delphi 7 z.B. die Schriftart alle Einträge. Das ändern der Farbe oder der Schriftart stellt noch kein Problem dar - das zeichnen aber schon. Dieser Artikel beschreibt genau, wie man das OnCustomDrawXXX-Event benutzt. Der von mir angesprochene Fehler wird in dem Artikel auch kurz im Abschnitt Some "ifs and buts" angesprochen.

Sobald du TListView verwenden willst und im CustomDraw-Event selber zeichnen willst, wirst du auf Probleme stoßen.

Eine relativ unelegante aber einfache Methode ist aber, einfach eine TProgressBar - Komponente auf das TListView-Objekt zu packen und es im OnCustomDraw-Event neu zu positionieren.

himitsu 29. Mai 2008 22:55

Re: ProgressBar + Caption im TListView/VST
 
selber Malsen, ala MoveTo und LineTo, meinte ich eigentlich nicht ...
weiß nur grad nicht wie die APIs hießen, aber es war irgendwas in Richtung "DrawTheme" ... da kann man sich von der WinAPI die gewünschte ProgressBar, entsprechend dem aktuellen XP-Theme, zeichnen lassen.

kng 29. Mai 2008 23:12

Re: ProgressBar + Caption im TListView/VST
 
Danke schonmal,

Ich hatte eig. auch vor, es erstmal mit einer normalen ListView zu machen, da ich mich mit dem VST noch nicht so gut auskenne :oops: und der Funktionsumfang der normalen ListView sonst für mein Programm eig. vollkommen ausreicht.

Ich habe es schon geschafft eine normale ProgressBar in eine ListView zu bekomme, allerdings habe ich es nicht geschafft, dass sich diese beim Resizen der Columns auch ordentlicht anpasst und mit einer Caption kann man diese auch nicht versehen.

Selbiges gilt für die Gauge, da kann man keinen benutzerdefinierten Text anzeigen.

Ich dachte da eher an eine Shape, PaintBox o.Ä.
Das auf dem Bild sieht ja auch eher gezeichnet aus.

Hat vielleicht jemand ein gaaanz kleines Beispiel :roll: , wie man das zeichnen könnte, wichtig ist erstmal nur die Beschriftung und das anpassen beim Resizen.

:hi:

himitsu 29. Mai 2008 23:51

Re: ProgressBar + Caption im TListView/VST
 
Du brauchst z.B. einfach nur im OnDrawItem die ProgrssBar und den Text zeichnen ... im Rect-Parameter bekommst du die ItemPosition und zeichnest innerhalb dieses Bereichs.

Dieses Ereignis wird aufgerufen, wenn das Item neu gezeichnet werden muß, also auch nach dem Resizen.

kng 30. Mai 2008 15:23

Re: ProgressBar + Caption im TListView/VST
 
Zitat:

Zitat von himitsu
Du brauchst z.B. einfach nur im OnDrawItem die ProgrssBar und den Text zeichnen ... im Rect-Parameter bekommst du die ItemPosition und zeichnest innerhalb dieses Bereichs.

Dieses Ereignis wird aufgerufen, wenn das Item neu gezeichnet werden muß, also auch nach dem Resizen.

"einfach nur" ist gut. :wink:
Ich habe mich bis jetzt noch nie mit OwnerDraw beschäftigt.

Das Zeichnen würde ich vll. noch gerade so hinbekommne, aber es ist ja nicht nur eine ProgressBar und die Positionen müssen in bestimmten Ereignissen immer aktualisiert werden.
Da kommt man mit dem ganzen Zeichnen schnell durcheinander und schön aussehen tuts dann bestimmt auch nicht mehr. :|

Kennt vll. jemand eine gute ProgressBar, die eine Text/Caption Eigenschaft besitzt?
Dann würde ich es erstmal damit versuchen, ein OnColumnResize Ereignis kann man wahrscheinlich leicht nachrüsten.

generic 30. Mai 2008 23:59

Re: ProgressBar + Caption im TListView/VST
 
Wenn du einen Einstieg zu dem VST brauchst, kannst du das Video vom 2. Stammtisch schauen.

http://www.delphipraxis.net/video#Stammtisch_2


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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-2025 by Thomas Breitkreuz