vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · Sonstiges   |   VB-Versionen: VB4, VB5, VB625.11.03
Verzeichnis-Eintrag unter dem Mauszeiger ermitteln

Hier wird gezeigt, wie sich in der DirListBox das Verzeichnis auslesen lässt, über dem sich der Mauszeiger befindet.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  11.982 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Unser heutiger Tipp zeigt, wie sich in der DirListBox das Verzeichnis auslesen lässt, über dem sich der Mauszeiger aktuell befindet. Vielleicht fragen Sie sich jetzt, für was das gut sein soll. Eine mögliche Antwort wäre: Drag & Drop zum Kopieren/Verschieben von Dateien einer FileListBox in ein bestimmtes Verzeichnis.

Erstellen Sie ein neues Projekt und platzieren ein DirList-Control (Dir1), sowie ein Label-Control (Label1) auf die Form. Fügen Sie nachfolgenden Code in das Codefenster der Form ein. Wird der Mauszeiger auf die DirListBox bewegt, wird das aktuelle Verzeichnis im Label-Control angezeigt.

Option Explicit
 
' benötogte API-Deklarationen
Private Declare Function SendMessage Lib "user32" _
  Alias "SendMessageA" ( _
  ByVal hwnd As Long, _
  ByVal wMsg As Long, _
  ByVal wParam As Long, _
  ByVal lParam As Long) As Long
 
Private Const LB_GETTOPINDEX = &H18E
Private Const LB_GETITEMHEIGHT = &H1A1
Private Sub Form_Load()
  Dir1_Change
End Sub
Private Sub Dir1_Change()
  ' aktuelle Verzeichnistiefe "merken"
  Dim nCount As Integer
  Dim nPos As Integer
 
  nCount = 1
  Do
    nPos = InStr(nPos + 1, Dir1.Path, "\")
    If nPos > 0 Then nCount = nCount + 1
  Loop Until nPos = 0
 
  Dir1.Tag = nCount
End Sub
Private Sub Dir1_MouseMove(Button As Integer, Shift As Integer, _
  X As Single, Y As Single)
 
  Dim nTopIndex As Long
  Dim nItemHeight As Long
  Dim nIndex As Long
  Dim i As Long
 
  With Dir1
    ' Ermitteln des ersten Index der Listbox
    nTopIndex = SendMessage(.hwnd, LB_GETTOPINDEX, 0, 0)
 
    ' Ermitteln der Item-Zeichenhöhe
    nItemHeight = SendMessage(.hwnd, LB_GETITEMHEIGHT, 0, 0) * _
      Screen.TwipsPerPixelY
 
    ' Ermitteln des Index, über dem der Mauspfeil steht
    nIndex = nTopIndex - 1
    For i = 0 To .Height Step nItemHeight
      If i > Y Then Exit For
      nIndex = nIndex + 1
    Next
 
    If nIndex >= 0 And nIndex < .ListCount + Val(.Tag) Then
      Label1.Caption = .List(nIndex - Val(.Tag))
    Else
      Label1.Caption = ""
    End If
  End With
End Sub

Dieser Tipp wurde bereits 11.982 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel