You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ITSM/.svn/pristine/0f/0fb02dc3d70031278fb70d488aa...

160 lines
6.2 KiB

Imports C1.Win.C1TrueDBGrid
Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Namespace TKB.VV.Utils
Public Class clsToolTips
Public WithEvents MyTooltip As New ToolTip
Dim ToolTipData As DataSet = Globals.ToolTipDaten
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
Dim l As New List(Of Control)
Dim WithEvents evh As MyGenericEventHandler = Globals.MyEventHanlder
Public Function Edit_ToolTips(ByRef frm As Form, ByRef ctlcol As Collection)
Me.Load_Data()
l.Clear()
Me.GetControl(frm, "*", l)
For Each s As Control In l
Try
MyTooltip.SetToolTip(s, frm.Name + "|" + s.Name)
MyTooltip.Tag = frm.Name
Catch ex As Exception
MsgBox(ex.Message)
End Try
Next
'For Each ctl As Control In ctlcol
' Try
' MyTooltip.SetToolTip(ctl, "SetToolTip")
' MyTooltip.Tag = frm.Name + "|" + ctl.Name
' Catch ex As Exception
' End Try
'Next
End Function
Private Sub MyTooltip_Popup(ByVal sender As Object, ByVal e As System.Windows.Forms.PopupEventArgs) Handles MyTooltip.Popup
'MsgBox(e.AssociatedControl.Name)
evh.Edit_Tooltip(MyTooltip.Tag, e.AssociatedControl.Name)
'Dim s As String = MyTooltip.Tag
'Dim sp() As String
'sp = s.Split("|")
'evh.Edit_Tooltip(sp(0), sp(1))
End Sub
Public Function Set_ToolTips(ByRef frm As Form)
Me.Load_Data()
'MyTooltip.ToolTipIcon = ToolTipIcon.Info
MyTooltip.IsBalloon = True
MyTooltip.UseFading = True
MyTooltip.UseAnimation = True
Dim dv As New DataView(ToolTipData.Tables(0), "Aktiv = 1 and (Formularname='" & frm.Name & "' or Formularname='Allgemein')", "", DataViewRowState.CurrentRows)
For Each dr As DataRowView In dv
l.Clear()
Me.GetControl(frm, dr.Item("Controlname"), l)
Try
For Each ctl As Control In l
Try
MyTooltip.SetToolTip(ctl, dr.Item("ToolTip"))
Catch
End Try
Next
Catch ex As Exception
End Try
Next
End Function
''' <summary>
''' Daten ab Datenbank laden
''' </summary>
''' <remarks></remarks>
Private Sub Load_Data()
Try
If ToolTipData.Tables.Count < 1 Then
ToolTipData.Tables.Clear()
Else
Exit Sub
End If
Catch ex As Exception
End Try
ToolTipData.Tables.Clear()
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = "dbo.my_tooltip_get_data"
'sqlcmd.Parameters(1).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(ToolTipData, "Tooltips")
Globals.SecurityDaten.Tables.Add(ToolTipData.Tables(0).Copy)
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
End Sub
#Region "Utils"
''' <summary>
''' Sucht in den Base-Controls s<>mtliche Controls mit dem Namen in "Key" (Wildcards * m<>glich) und listet
''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung
''' </summary>
''' <param name="BaseControl">Base-Contrlo (z.B. aktuelles Formular</param>
''' <param name="Key">Schl<68>ssel welcher gesucht werden soll</param>
''' <param name="L">Liste der gefundenen Objekte</param>
''' <returns>True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
''' </returns>
''' <remarks></remarks>
Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean
If L Is Nothing Then L = New List(Of Control)
Dim Gut As Boolean
Dim ReturnFlag As Boolean = False
If Key IsNot Nothing Then Key = Key.ToLower
If BaseControl.HasChildren = True Then
For Each ctl As Control In BaseControl.Controls
Gut = False
If Key Is Nothing Then
Gut = True
Else
If ctl.Name.Length >= Key.Length Then
Key = Key.ToLower
If Key.StartsWith("*") Then
If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True
ElseIf Key.EndsWith("*") Then
If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True
Else
If Key = ctl.Name.ToLower Then Gut = True
End If
End If
End If
If Gut = True Then
L.Add(ctl)
If ReturnAtFirstElement = True Then ReturnFlag = True
End If
If ReturnFlag = False Then
Call GetControl(ctl, Key, L)
End If
Next
End If
If L.Count - 1 > -1 Then
Return True
Else
Return False
End If
End Function
#End Region
End Class
End Namespace