Rubrik: Controls · MSFlexGrid/DataGrid | VB-Versionen: VB4, VB5, VB6 | 15.08.05 |
CheckBox-Spalte im MSFlexGrid Über einen kleinen Umweg lässt sich eine Spalte im MSFlexGrid-Control auch als CheckBox-Spalte verwenden. | ||
Autor: Zardoz | Bewertung: | Views: 20.782 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | 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