Rubrik: Controls · MSFlexGrid/DataGrid | VB-Versionen: VB4, VB5, VB6 | 27.01.03 |
Zellen-ToolTips im MSFlexGrid-Control Dieses Beispiel zeigt, wie sich das MSFlexGrid-Control mit individuellen "Zellen"-ToolTips ausstatten lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 17.469 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wenn man das MSFlexGrid-Control verwendet und hierbei die Texte in den Zellen aufgrund ihrer Größe nicht vollständig dargestellt werden, wäre es wünschenswert, dass die Zellen-Texte als ToolTip angezeigt werden, wenn sich der Mauszeiger über der Zelle befindet.
Das ganze ist auch nicht schwer zu realisieren
Hier der benötigte Code
Private Sub MSFlexGrid1_MouseMove(Button As Integer, _ Shift As Integer, x As Single, y As Single) ' Zellen-ToolTip aktualisieren Static nRow As Long Static nCol As Long If Button = 0 Then With MSFlexGrid1 If .MouseRow + 1 <> nRow Or .MouseCol + 1 <> nCol Then nRow = .MouseRow + 1 nCol = .MouseCol + 1 .ToolTipText = .TextMatrix(.MouseRow, .MouseCol) End If End With End If End Sub
In obigem Beispiel erscheint der ToolTip jetzt immer, wenn der Mauszeiger auf eine Zelle "verweilt". Soll der ToolTip aber nur angezeigt werden, wenn der Zelleninhalt größer als die verfügbare Zellenbreite ist, muss der Code noch um eine Abfrage erweitert werden:
Private Sub MSFlexGrid1_MouseMove(Button As Integer, _ Shift As Integer, x As Single, y As Single) ' Zellen-ToolTip aktualisieren Static nRow As Long Static nCol As Long Dim sText As String If Button = 0 Then With MSFlexGrid1 If .MouseRow + 1 <> nRow Or .MouseCol + 1 <> nCol Then nRow = .MouseRow + 1 nCol = .MouseCol + 1 ' ToolTip nur anzeigen, falls Text größer ' als Zellenbreite sText = .TextMatrix(.MouseRow, .MouseCol) If TextWidth(sText) > .ColWidth(.MouseCol) Then .ToolTipText = sText Else .ToolTipText = "" End If End If End With End If End Sub