Hallo All und Stefan,
habe nochmal unter zu Hilfenahme des Links versucht, das Ganze in geordnete Bahnen zu bringen, allerdings habe ich meine Probleme mit den absoluten Koordinaten.
Mein Tooltip schwebt irgendwo auf dem Screen und Inhalt hat es auch nicht.
Der Source sieht momentan so aus und ich würde mich freuen, wenn mir jemand aus dem Dschungel hilft (sehe den Wald vor lauter Weihnachtsbäumen nicht mehr)
Global gRect as Rect 'ist global deklariert
Private Sub Datei1_MouseMove(Index As Integer, Button As Integer, Shift As _
Integer, X As Single, Y As Single)
Dim DateiName As String
Dim nIndex As Long
Dim nTop As Long
Dim nLeft As Long
Dim nHeight As Long
Dim nWidth As Long
Dim mDesktopWindow As Long
' Mit Hilfe des ermittelten Index, wird der Dateiname an DateiName übergeben
nIndex = FileListBoxHitTest(Datei1(glngFileList), X, Y)
DateiName = Datei1(glngFileList).List(nIndex)
' PictureBox leeren, zur Aufnahme des neu ermittelten Eintrages
PicRuler.Cls
PicRuler.AutoRedraw = True
Set PicRuler.Font = Datei1(glngFileList).Font
nWidth = PicRuler.TextWidth(DateiName)
' Anzeige soll nur erfolgen, wenn der Eintrag(DateiName) breiter als die
' FileListBox ist
If gRect.Right - gRect.Left <= PicRuler.TextWidth(DateiName) Then
' Startposition für Tooltip ermitteln (bis hierher klappt alles)
nTop = gRect.Top + (nIndex - Datei1(glngFileList).TopIndex) * gItemHeight + _
1
nWidth = nWidth + PicRuler.TextWidth(" ")
' Hier soll nur die optimale Höhe eingestellt werden
nHeight = PicRuler.TextHeight("A") + 3
--> Ab hier kommen die Schwierigkeiten, wo mir der Durchblick fehlt
' Position auf dem Bildschirm ermitteln
If nWidth + 1 > Screen.Width \ Screen.TwipsPerPixelX Then
nLeft = (Screen.Width \ Screen.TwipsPerPixelX) - nWidth
End If
If nTop + nHeight > Screen.Height \ Screen.TwipsPerPixelY Then
nTop = (Screen.Height \ Screen.TwipsPerPixelY) - nHeight
End If
Debug.Print nLeft & ", " & nTop
If GetParent(PicRuler.hwnd) <> GetDesktopWindow() Then
SetParent PicRuler.hwnd, GetDesktopWindow()
End If
nTop = nTop + gRect.Bottom
nLeft = gRect.Left
' Setzen des Tooltip auf die ermittelte Position, wo der Mauszeiger steht
SetWindowPos PicRuler.hwnd, HWND_TOPMOST, nLeft, nTop, nWidth, nHeight, _
SWP_NOACTIVATE
PicRuler.Visible = True
Debug.Print frmDosShell.Left & ", " & frmDosShell.Top & ", " & nLeft & ", " _
& nTop & ", " & nWidth & ", " & nHeight
Datei1(glngFileList).ToolTipText = DateiName
Else
Datei1(glngFileList).ToolTipText = ""
PicRuler.Visible = False
End If
End Sub Gruß BAStler |