vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Controls · DataGrid & DataGridView   |   VB-Versionen: VB2010 - VB201530.05.19
Funktion zum Formatieren einer DatagridView-Spalte mit dezimal Alignment

Die im CellPainting-Ereignis eines DatagridView anzuwendende Funktion erzeugt das dezimale Alignment der numerischen Werte.

Autor:   Dietrich HerrmannBewertung:     [ Jetzt bewerten ]Views:  756 
ohne HomepageSystem:  Vista, Win7, Win8, Win10kein Beispielprojekt 

Für die Lesbarkeit von numerischen Werten bei der Anzeige im DatagridView ist im speziellen Fall von numerischen Werten (unterschiedliche Stellenanzahl vor und nach dem Komma) die dezimale Ausrichtung der Werte in der Spalte von Vorteil. Dezimale Ausrichtung bedeutet dabei die Ausrichtung aller Werte der Spalte am Komma. Dies kann man insbesondere anwenden auf Spalten einer SQL-Tabelle des Typs "float".

Folgende Restriktionen sind für die Anwendung der Funktion vonnöten:

  • im Datagridview muss gelten: AutoSizeColumnsMode = None

Der Aufruf der Funktion erklärt sich von selbst.

Hier die Funktion:

''' <summary>
'''   Formatieren einer DatagridView-Spalte mit dezimal Alignment
''' </summary>
''' <param name="e">das Cellpainting-Ereignis</param>
''' <param name="theDGV">das DatagridView</param>
''' <param name="theColumnIndex">der Index der Spalte für dezimal Alignment</param>
''' <param name="theBGColor">die Hintergrundfarbe der Zelle</param>
''' <param name="theForeColor">die Vordergrundfarbe der Zelle</param>
Public Sub createDecimalAlignColumn(e As DataGridViewCellPaintingEventArgs,
  theDGV As DataGridView,
  theColumnIndex As Short,
  theBGColor As Color,
  theForeColor As Color)
 
  Dim strE, strL, strR As String
  Dim SizeL, SizeR As SizeF
  Dim recL, recR As RectangleF
  Dim sym, iComm As Short
  Dim dFont As Font = theDGV.DefaultCellStyle.Font
 
  Dim sfL As New StringFormat With {.Alignment = StringAlignment.Near,
    .LineAlignment = StringAlignment.Center}
 
  Dim sfR As New StringFormat With {.Alignment = StringAlignment.Far,
    .LineAlignment = StringAlignment.Center}
 
  Dim p As New Pen(theDGV.GridColor)
  Dim brbc As New SolidBrush(theBGColor)
  Dim brfc As New SolidBrush(theForeColor)
 
  If e.ColumnIndex = theColumnIndex And e.RowIndex >= 0 And Not IsDBNull(e.Value) Then
    e.PaintBackground(e.CellBounds, True)
 
    ' das Rechteck der Zelle
    Dim recCell As New Rectangle(e.CellBounds.X - 1, e.CellBounds.Y - 1,
      e.CellBounds.Width, e.CellBounds.Height)
 
    sym = recCell.Width / 2 ' die Mitte der Zelle
 
    ' das Rechteck für den ganzzahligen Teil des Werts
    recL = New RectangleF(recCell.X, recCell.Y, sym, recCell.Height)
 
    ' das Rechteck für den Dezimalstellen-Tei des Werts
    recR = New RectangleF(recCell.X + sym - 2, recCell.Y, recCell.Width - sym, recCell.Height)
 
    ' der Wert als String
    strE = e.Value.ToString
    iComm = strE.IndexOf(",")
    If iComm >= 0 Then
      strL = strE.Substring(0, iComm)  ' String vor dem Komma
      strR = strE.Substring(iComm)     ' String nach dem Komma inklusive
    Else
      strL = strE
      strR = ",0"
    End If
 
    With e.Graphics
      ' linker String, Länge gemäß Font
      SizeL = .MeasureString(strL, dFont)
 
      ' rechter String, Länge gemäß Font
      If strR <> "" Then SizeR = .MeasureString(strR, dFont)
      .TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
 
      ' Background der Zelle
      .FillRectangle(brbc, recCell)
 
      ' Border der Zelle
      .DrawRectangle(p, recCell)
 
      ' String vor dem Komma
      .DrawString(strL, dFont, brfc, recL, sfR)
 
      ' String nach dem Komma
      If strR <> "" Then .DrawString(strR, dFont, brfc, recR, sfL)
    End With
    e.Handled = True
  End If
End Sub

Dieser Tipp wurde bereits 756 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (8 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel