ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 12.07.2001

Diese Seite wurde zuletzt aktualisiert am 12.07.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Fortschritt im ListView

Zurück...


Anzeige

(-hg) mailto:hg_lvwprogress@aboutvb.de

Eine Fortschrittsanzeige in einer Spalte eines ListView-Steuerelements? Auf den ersten Blick scheint das unmöglich zu sein. Auf den zweiten Blick fallen einem vielleicht Ansätze ein, wie etwa ein ProgressBar-Steuerelement (ebenfalls aus den Microsoft Common Controls) "irgendwie" in der richtigen Zeile und richtigen Spalte über dem ListView zu deponieren, gegebenenfalls werden mehrere Fortschrittsanzeigen gleichzeitig entsprechend positioniert; und wenn der Anwender im ListView blättert, dann... Oh je... Auf den dritten Blick kommen einem dann Dinge wie Subclassen, OwnerDrawn und mehr in den Sinn - horrend viel Aufwand für ein eigentlich schlichtes Vorhaben und einen schlichten Effekt.

Rudern wir also noch einmal zurück. Wahrscheinlich haben Sie bei der Fortschrittsanzeige an einen Balken gedacht, dessen Länge den Fortschritts-Zustand repräsentieren soll. Wenn Sie dabei nicht an einen massiven Balken gedacht haben, sondern an ein Aussehen wie beim ProgressBar-Steuerelement mit einer Reihe von kleinen Blöcken, sind Sie schon nahe an der Lösung dran - die so aussieht:

Eine zeichenbasierte Fortschrittsanzeige in einer Spalte eines ListView-Steuerelements

Eine zeichenbasierte Fortschrittsanzeige in einer Spalte eines ListView-Steuerelements

Es ist ganz einfach: Keine Grafik, sondern aneinander gereihte Zeichen lassen den "Balken" wachsen. In den meisten Schriften ist das Ascii-Zeichen 127 unbesetzt und wird als einfacher Block dargestellt. In der Standard-Schrift "MS Sans Serif" sogar als schmaler, gefüllter Block, in den meisten anderen Schriften als hohles Kästchen. Sie können im Prinzip auch jedes andere Zeichen wählen. Die Absicht der Anzeige wird jedem Anwender vollkommen klar sein - auch wenn es vielleicht nicht ganz so perfekt aussieht, wie bei einem "richtigen" ProgressBar-Steuerelement.

Es lohnt sich sogar gar nicht, weitere Worte über das Wie zu verlieren, das folgende Code-Beispiel (für Visual Basic 6, ein ähnliches Beispiel für Visual Basic 5 finden Sie im Download zu diesem Artikel) spricht wohl für sich. Sie brauchen lediglich eine Spalte beispielsweise mit dem Schlüssel "percent" in geeigneter Breite einzurichten.

Private Const kBlockChar = 127

Private Sub Form_Load()
  With ListView1
    With .ListItems
      With .Add(, "text1", "Item 1").ListSubItems.Add(, "percent")
        .Bold = True
        .ForeColor = vbHighlight
      End With
      With .Add(, "text2", "Item 2").ListSubItems.Add(, "percent")
        .Bold = True
        .ForeColor = vbHighlight
      End With
    End With
    .ColumnHeaders("percent").Width = 1410
  End With
End Sub

Private Sub Timer1_Timer()
  Dim nCount As Integer
  
  With ListView1.ListItems("text1").ListSubItems("percent")
    nCount = Len(.Text) \ 2
    nCount = nCount + 1
    If nCount > 10 Then
      nCount = 0
    End If
    .Text = String$(nCount * 2, kBlockChar)
  End With
End Sub

Beispiel-Projekte ListViewProgress (VB 5 und 6) (lvwprogress.zip - ca. 6,2 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer