vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · MSFlexGrid/DataGrid   |   VB-Versionen: VB4, VB5, VB615.08.05
CheckBox-Spalte im MSFlexGrid

Über einen kleinen Umweg lässt sich eine Spalte im MSFlexGrid-Control auch als CheckBox-Spalte verwenden.

Autor:   ZardozBewertung:  Views:  18.816 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Im Gegensatz zu manch anderen Grid-Controls lässt sich im MSFlexGrid-Control eine Spalte leider nicht direkt als "CheckBox"-Spalte definieren. Über einen kleinen Umweg jedoch, kann man auch das MSFlexGrid mit dieser Funktionalität ausstatten.

Hierzu muss man lediglich die CellFontName-Eigenschaft der gewünschten "CheckBox"-Spalte auf "WingDings" festlegen. Durch Zuweisung des Ascii-Zeichens Chr$(254) erscheint in der Spalte dann eine CheckBox mit Häkchen. Bei Zuweisung des Zeichens Chr$(111) hingegen verschwindet das Häkchen.

Beispiel:
Die erste Spalte des MSFlexGrid-Controls soll zu einer CheckBox-Spalte umfunktioniert werden. Beim Klick in die Spalte soll der Status entsprechend geändert werden können.

Option Explicit
 
Private Sub Form_Load()
  With MSFlexGrid1
    ' autom. Neuzeichen ausschalten
    .Redraw = False
 
    ' FlexGrid mit 100 Zeilen und 4 Spalten füllen
    .Rows = 100
    .Cols = 4
 
    ' autom. Scrollen des Inhalts beim 
    ' Ziehen des Scrollbalkens aktivieren
    .ScrollTrack = True
 
    ' aktuelle Zelle (Startzelle)
    .Row = .FixedRows
    .Col = .FixedCols
 
    ' alle Zeilen selektieren
    .RowSel = .Rows - 1
    .ColSel = .Col
 
    ' nachfolgende Zellen-Zuweisungen autom. für
    ' den selektierten Bereich wiederholen
    .FillStyle = flexFillRepeat
 
    ' Ausrichtung der Zellen: zentriert
    .CellAlignment = 1
 
    ' Schriftart und -größe zuweisen
    .CellFontName = "Wingdings"
    .CellFontSize = 14
 
    ' Spaltenbreite festlegen
    .ColWidth(.Col) = 350
 
    ' Inhalt allen Zellen der 1. Spalte vorbelegen
    ' (CheckBox)
    .Text = Chr(254)
 
    .FillStyle = flexFillSingle
    .Row = .FixedRows
    .Col = .FixedCols
 
    ' autom. Neuzeichnen aktivieren
    .Redraw = True
  End With
End Sub
Private Sub MSFlexGrid1_Click()
  ' Beim Klick auf eine CheckBox-Spalte, Status ändern
  With MSFlexGrid1
    If .MouseRow >= .FixedRows And .MouseCol = 1 Then
      .Text = IIf(.Text = Chr(111), Chr(254), Chr(111))
    End If
  End With
End Sub



Anzeige

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

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.
 
 
Copyright ©2000-2020 vb@rchiv Dieter OtterAlle 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.