33
ToolTipController
Th3maz1ng edited this page 2024-08-19 20:47:41 +00:00
Table of Contents
- [[ToolTipController|Home]]
ToolTipController
Retour
Comment utiliser le ToolTipController de DevExpress, c'est ce que nous allons voir ici
Introduction
Le ToolTipController est un contrôle permettant de gérer l'affichage des infobulles.
Il est déclenché par un passage de la souris sur d'autres éléments devexpress.
En voici un apperçu :
Utilisation du ToolTipController avec un Ctrl_XtraGrid
- Partie Designer
- Déposez via le designer VisualStudio un ToolTipController
- Allez dans l'onglet des propriétés de votre Ctrl_XtraGrid afin d'assigner votre ToolTipController à la propriété ToolTipController.
- Partie code
L'étape précédente va permettre au ToolTipController de générer un événement lorsque la souris passera sur le Ctrl_XtraGrid.
Nous allons maintenant voir comment gérer cette événement afin de définir le texte à afficher dans l'infobulle :
Private Sub ToolTip_GetActiveObjectInfo(sender As Object, e As ToolTipControllerGetActiveObjectInfoEventArgs) Handles ToolTipController1.GetActiveObjectInfo
Dim info As ToolTipControlInfo = Nothing
If e.SelectedControl Is Ctrl_XtraGrid1 Then
Try
'Les deux lignes qui suivent permettent de récupérer les informations qui sont dans la cellule sur laquelle en passe la souris
Dim view As GridView = CType(Ctrl_XtraGrid1.GetViewAt(e.ControlMousePosition), GridView)
Dim hi As GridHitInfo = view.CalcHitInfo(e.ControlMousePosition)
'Permet de stocker le texte de l'infobulle
Dim ToolTipText_l As String = String.Empty
'On sort de la fonction si l'évennement est déclanché en dehors d'une cellule du tableau
If Not hi.InRowCell Then Exit Sub
Dim viewInfo_l As GridViewInfo = CType(GridView1.GetViewInfo, GridViewInfo)
If hi.Column.FieldName.Split("_"c).Count = 2 Then
'On recupere la date et on l'affiche dans le tooltip
Dim objdp_l As ObjectifDateEffetDataPack = TryCast(GridView1.GetDataRow(hi.RowHandle).Item(hi.Column.FieldName), ObjectifDateEffetDataPack)
If objdp_l IsNot Nothing Then
ToolTipText_l = "Date d'effet : " + objdp_l.DateEffet.ToString("dd/MM/yyyy")
Else 'On la calcule :
Dim year_l As Integer = 0
If hi.Column.FieldName.Split("_"c)(0) = "AM1" Then
year_l = (Annee_c.AddYears(-1)).Year
ElseIf hi.Column.FieldName.Split("_"c)(0) = "A" Then
year_l = Annee_c.Year
ElseIf hi.Column.FieldName.Split("_"c)(0) = "AP1" Then
year_l = (Annee_c.AddYears(1)).Year
End If
Dim date_l As Date = Utils.GetWeekStartDate(hi.Column.FieldName.Split("_"c)(1), year_l)
ToolTipText_l = "Date d'effet : " + date_l.ToString("dd/MM/yyyy")
End If
Dim Position_l As Object = hi.HitTest.ToString() + hi.RowHandle.ToString()
info = New ToolTipControlInfo(Position_l, ToolTipText_l)
ElseIf hi.Column.FieldName = "LIBELLE" Then
ToolTipText_l = If(GridView1.GetDataRow(hi.RowHandle).Item("DESCRIPTION").ToString = "", "Pas de description", GridView1.GetDataRow(hi.RowHandle).Item("DESCRIPTION").ToString)
'Pour finir, on définit le texte de l'infobulle
Dim Position_l As Object = hi.HitTest.ToString() + hi.RowHandle.ToString()
info = New ToolTipControlInfo(Position_l, ToolTipText_l)
End If
Catch ex As Exception
Finally
'Puis on affiche l'infobulle.
e.Info = info
End Try
End If
End Sub
Vous ne pouvez pas afficher une infobulle sur un contrôle qui n'est pas actif (aka : Enabled = False), afin de contourner le problème, rendez le contrôle actif et mettez-le en lecture seule (Properties.ReadOnly = True).