VB6 Fortschrittsbalken in Kuchenform

Hallo alle zusammen,
aus Platzgründen suche ich für meine VB6-Anwendung einen Fortschrittsbalken in Kuchenform (in 2D Ansicht). Es betrifft einen Zähler z.B. von 0 bis 100. Jedes Mal wenn der Zähler um eins erhöht wird, wächst die Kuchenscheibe. Bei 100 ist der komplette Kuchen zusehen.

Gibt es so etwas überhaupt?
Vielleicht hat ja jemand eine Idee, wie man so etwas machen kann.

PS Microsoft hat so etwas in 3D wenn man sich die Eigenschaften eines Laufwerkes anschaut. Es zeigt wie viel das Laufwerk belegt ist.

Mit freundlichen Grüßen
Detlev

Hallo Detlev,

Gibt es so etwas überhaupt?

ich gehe davon aus.
Mit VB 6.0 (ich hab nur VB 5.0) könnte man sich evtl. so ein ocx-Fortschritssanzeige herstellen.

Schau mal hier, vielleicht kannst du sowas ja benutzen als Anzeige:

http://www.activevb.de/tipps/vb6tipps/tipp0312.html

Vielleicht liest ja z.B. Cheepapa mit, er könnte dir sicher mehr bzw. überhaupt helfen im Gegensatz zu mir :smile:

Gruß
Reinhard

Hier das gleiche in 3D wie im Datenträger-Explorer
… wie im Explorer:

http://www.activevb.de/tipps/vb6tipps/tipp0460.html

Gruß
Reinhard

Hallo Reinhard,
vielen Dank für Deinen Tipp. Ich habe mir beide Diagramme (2D + 3D) angesehen und ausprobiert. Beide Beispiele sind sehr aufwendig und nicht ganz das was ich möchte. Es sollte nur ein Kreis sein, der Stepp bei Stepp aufgefüllt wird. Sicher ist das leichter gesagt als getan, aber vielleicht gibt es doch noch einen Hinweis aus der großen VB-Fan Gemeinde.

Mit freundlichen Grüßen
Detlev

vielen Dank für Deinen Tipp. Ich habe mir beide Diagramme (2D

  • 3D) angesehen und ausprobiert. Beide Beispiele sind sehr
    aufwendig und nicht ganz das was ich möchte. Es sollte nur ein
    Kreis sein, der Stepp bei Stepp aufgefüllt wird. Sicher ist
    das leichter gesagt als getan, aber vielleicht gibt es doch
    noch einen Hinweis aus der großen VB-Fan Gemeinde.

Hallo Detlev,

nimm einfach mal eine Form mit einem CommandButton,
den nachfolgenden Code, lade die Form dann und klick dann mehrmals auf den Button…
Für mich ist das jetzt ein Kreis der Step by Step (durch Buttonklick)
aufgefüllt wird.
Die Schrittweite kannste ja leicht von 20 auf 3,6 abändern wenn du da 100 steps haben willst.
Das ist der 2d-Code von activevb, ich habe nur Kleinigkeiten angepast.
Aufwendig fand ich das nicht.

Gruß
Reinhard

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm ---------
' Steuerelement: Kontrollkästchen-Steuerelement "Check1"

Option Explicit

Private Declare Function Pie Lib "gdi32" (ByVal hdc As \_
 Long, ByVal x1 As Long, ByVal y1 As Long, ByVal \_
 x2 As Long, ByVal y2 As Long, ByVal X3 As Long, \_
 ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 \_
 As Long) As Long

Private Type ELPRECTTYPE
 Left As Long
 Top As Long
 Right As Long
 Bottom As Long
 rX As Long
 rY As Long
 Mx As Long
 My As Long
End Type

Dim PiRad As Double, Fortschritt As Double

Private Sub Command1\_Click()
Fortschritt = Fortschritt + 20
Call Form\_Paint
End Sub

Private Sub Form\_Load()
 Me.ScaleMode = vbPixels
 PiRad = 4 \* Atn(1) / 180
End Sub

Private Sub Form\_Paint()
 Dim elpRect As ELPRECTTYPE
 Dim x1&, y1&, x2&, y2&
 Dim WnkStart As Double, WnkEnde As Double, a As Double
 Me.FillStyle = vbFSSolid
 With elpRect
 .Left = 10
 .Top = 10
 .Right = 210
 .Bottom = 210
 .rX = (.Right - .Left) / 2
 '.rX = (.Right - .Left) ' bringt nix ???
 .rY = (.Bottom - .Top) / 2
 .Mx = .rX + .Left
 .My = .rY + .Top
 'If Check1.Value = vbUnchecked Then Me.ForeColor = vbMagenta
 Me.FillColor = vbRed
 WnkStart = 100
 WnkEnde = 120 + Fortschritt
 Call GetXYfromAngle(.rX, .rY, .Mx, .My, WnkStart, x1, y1)
 Call GetXYfromAngle(.rX, .rY, .Mx, .My, WnkEnde, x2, y2)
 Call Pie(Me.hdc, .Left, .Top, .Right, .Bottom, \_
 x1, y1, x2, y2)
 End With
End Sub

Private Sub GetXYfromAngle(rX&, rY&, Mx&, My&, \_
 Wnk As Double, x&, y&amp:wink:

 x = Sin(PiRad \* Wnk) \* rX + Mx
 y = Cos(PiRad \* Wnk) \* rY + My
End Sub

Hallo Reinhard,
Du hast recht, jetzt sieht die Sache schon etwas übersichtlicher aus. Die Stepps über die Taste werde ich durch einen Zähler ersetzen. Nur ein Problem habe ich jetzt, wenn der Kuchen voll ist und ich möchte wieder von vorne beginnen, muss ich den Kuchen löschen. Der Kuchen ist aber direkt auf der Form erstellt. mit Me.??? kann ich den Kuchen ja nicht löschen, dann lösche ich ja alles was auf der Form ist.
Mit freundlichen Grüßen
Detlev

Hallo Detlev,

Du hast recht, jetzt sieht die Sache schon etwas
übersichtlicher aus.

du hast die Möglichkeiten die in dem Code von Activevb nicht erkannt?

Die Stepps über die Taste werde ich durch
einen Zähler ersetzen.

Korrekt.

Nur ein Problem habe ich jetzt, wenn
der Kuchen voll ist und ich möchte wieder von vorne beginnen,
muss ich den Kuchen löschen.

Wieso mußt du ihn löschen?
Du mußt da doch den Kuchen nur mit „Nullwerten“ neu zeichnen lassen.

Der Kuchen ist aber direkt auf der Form erstellt.
mit Me.??? kann ich den Kuchen ja nicht
löschen, dann lösche ich ja alles was auf der Form ist.

Die ??? bei Me.??? entscheiden was du da löschst.
Deine ??? kenne ich nicht.

Gruß
Reinhard