Hallo,
ich stehe gerade ein wenig auf dem Schlauch.
Ich habe eine Form. Ne gewaltige Form *grins* wo sich allerhand Steuerelemente drauf befinden. Unter anderem auch ca. 80 Textboxen.
Einige Textboxen fungieren als Link. Ein Label dazu missbrauchen geht aus diversen Gruenden nicht.
Soweit klappt auch alles wunderbar. Nur kann es auch einmal vorkommen, das kein Link vorhanden ist und die Zeile dementsprechend leer bleibt. Dann kann man mit der Maus in die Zeile klicken und man sieht dann den blöden Cursor, was nicht sein soll / darf
Weiss jemand wie ich das beheben kann?
Hier der relevante Code
'Code in der Form
Private Sub Form\_Load()
Call CreateHyperlink
End Sub
Private Sub CreateHyperlink()
Call LinkCreate(Text1(19), Me): Call LinkDisplay(Text1(19))
Call LinkCreate(Text1(45), Me): Call LinkDisplay(Text1(45))
Call LinkCreate(Text6(28), Me): Call LinkDisplay(Text6(28))
Call LinkCreate(Text6(29), Me): Call LinkDisplay(Text6(29))
Call LinkCreate(Text7(0), Me): Call LinkDisplay(Text7(0))
Call LinkCreate(Text7(1), Me): Call LinkDisplay(Text7(1))
Call LinkCreate(Text7(2), Me): Call LinkDisplay(Text7(2))
Call LinkCreate(Text7(3), Me): Call LinkDisplay(Text7(3))
Call LinkCreate(Text7(4), Me): Call LinkDisplay(Text7(4))
Call LinkCreate(Text7(5), Me): Call LinkDisplay(Text7(5))
Call LinkCreate(Text7(6), Me): Call LinkDisplay(Text7(6))
Call LinkCreate(Text7(7), Me): Call LinkDisplay(Text7(7))
Call LinkCreate(Text7(9), Me): Call LinkDisplay(Text7(9))
Call LinkCreate(Text7(42), Me): Call LinkDisplay(Text7(42))
End Sub
Private Sub Text7\_Click(Index As Integer)
Select Case Index
Case 0, 1, 2, 3, 4, 5, 6, 7, 9
If Trim(Text7(Index).Text) = "" Then Exit Sub
Text7(Index).Tag = "": Text7(Index).Tag = Text7(Index).Text
Call LinkGo(Text7(Index))
Case 42
If Trim(Text7(Index).Text) = "" Then Exit Sub
Text7(Index).Tag = "": Text7(Index).Tag = "Mailto:" & Text7(Index).Text
Call LinkGo(Text7(Index))
Case Else
End Select
End Sub
Private Sub Text7\_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Index
Case 0, 1, 2, 3, 4, 5, 6, 7, 9, 42
If Trim(Text7(Index).Text) = "" Then Exit Sub
Call LinkHover(Text7(Index), X, Y)
Case Else
End Select
End Sub
'Modul Hyperlink
Option Explicit
Private Const SE\_ERR\_NOASSOC = 31
Private Const SE\_ERR\_NOTFOUND = 2
Global Const Link\_Normal = &HA56B39 ' Blauton
Global Const Link\_Hover = &HFF& ' Rot
Global Const resHand = 2
Public Sub LinkCreate(Link As TextBox, Optional Container As Variant)
With Link
.Locked = True
.TabStop = False
.BorderStyle = 0
If Not IsMissing(Container) Then
.BackColor = Container.BackColor
End If
End With
End Sub
Public Sub LinkDisplay(Link As TextBox, Optional ByVal ColorNormal As Variant)
With Link
If IsMissing(ColorNormal) Then
.ForeColor = Link\_Normal
Else
.ForeColor = ColorNormal
End If
.Font.Underline = False
On Local Error Resume Next
.MouseIcon = LoadResPicture(resHand, vbResCursor)
.MousePointer = 99
On Local Error GoTo 0
End With
End Sub
Public Sub LinkHover(Link As TextBox, X As Single, Y As Single, Optional ByVal ColorNormal As Variant, Optional ByVal ColorHover As Variant)
With Link
If X \>= 0 And Y \>= 0 And X "http://" Then URL = "http://" & URL
Call ShellExecute(GetDesktopWindow(), "Open", URL, "", "", 3)
ElseIf Left$(LCase(Link.Tag), 7) = "mailto:" Then
Call ShellExecute(GetDesktopWindow(), "Open", Link.Tag, "", "", 1)
ElseIf Left$(LCase(Link.Tag), 4) = "App:" Then
DocumentOpen Mid$(Link.Tag, 5)
End If
End Sub
Private Sub DocumentOpen(sFilename As String)
Dim sDirectory As String
Dim lRet As Long
Dim DeskWin As Long
DeskWin = GetDesktopWindow()
lRet = ShellExecute(DeskWin, "open", sFilename, vbNullString, vbNullString, vbNormalFocus)
If lRet = SE\_ERR\_NOTFOUND Then
'Datei nicht gefunden
ElseIf lRet = SE\_ERR\_NOASSOC Then
sDirectory = Space(260)
lRet = GetSystemDirectory(sDirectory, Len(sDirectory))
sDirectory = Left(sDirectory, lRet)
Call ShellExecute(DeskWin, vbNullString, "RUNDLL32.EXE", "shell32.dll,OpenAs\_RunDLL " & sFilename, sDirectory, vbNormalFocus)
End If
End Sub
Einige Declarationen habe ich hier nicht gepostet da es sonst den Rahmen sprengen würde und ich denke mal sie auch hier nicht relevant ist für mein Problem
Weiss jemand Rat, wie ich das abstellen kann das der Cursor nicht eingeblendet wird, wenn in der Textbox kein Eintrag drinnen steht ?
MfG Alex