Moin Gemeinde,
folgendes ist gegeben:
Ein Listenfeld mit den Spalten ID, Keyword und Beschreibung aus der Tabelle tblKeyword.
Die Spalten ID und Beschreibung sind mit 0 cm ausgeblendet.
Jetzt soll beim überfahren der Einträge mit der Maus die Spalte Beschreibung in einem Textfeld (Text) angezeigt werden.
Dazu habe ich bei Mausbewegung folgendes eingefügt.
Private Sub Listenfeld_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text.Value = Listenfeld.Column(2)
End Sub
Der Beschreibungstext wird aber nur bei einem Klick-Ereignis angezeigt.
Was muss ich anstellen damit die Anzeige so funktioniert wie ich es gerne hätte?
Liebe Grüße an alle und ein schönes Bergfest
Jörg
Hallo Jörg,
dafür müsstest du ausrechnen, wo sich der Mousecursor relativ zur Listbox befindet, um Spalte oder Zeile zu ermitteln. Stephen Lebans hat dazu mal ein Beispiel (https://www.lebans.com/listboxauto1.htm) gemacht, vielleicht hilft das ja weiter.
Knobbi38
Hallo Jörg,
Du könntest alternativ zum Listbox-Objekt ein ListView-Objekt verwenden und das aktuelle ListItem mit der HitTest-Funktion des Listview-Objekts im MouseMove-Event abfragen
Gruß Bernd
Hallo Jörg,
Bernds Beitrag hat mich auf die Idee gebracht, zu testen, ob sich mit der IAccessible-Schnittstelle ebenfalls etwas auslesen lässt. Zumindest bei einem einfachen Test konnte ich damit den Index des Elements einer Listbox ermitteln, über das die Maus gerade fährt. Das könnte man eventuell ausbauen.
Hier mal ein erster Code-Ansatz:
' Im Formular
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare PtrSafe Function GetCursorPos Lib "user32.dll" _
(ByRef lpPoint As POINTAPI) As Long
' Im MouseMove Event der Listbox
Dim pt As POINTAPI
GetCursorPos pt
On Error Resume Next
Debug.Print Me.Listboxname.accHitTest(pt.X, pt.Y)
Knobbi38
Nachtrag:
hier eine Beispieldatenbank (PoC):
Hallo Knobi38,
ganz dicken Dank an dich. Hab deine Beispieldatenbank ausprobiert und es funktioniert super.
Werde dich heute Abend lobend in meneim Nachtgebet erwähnen ;)
Eine Frage noch:
Ist es möglich die ForeColor-Eigenschaft eines ausgewählten Eintrages zu ändern?
Liebe Grüße
Jörg
Hallo Jörg,
Danke für deine Rückmeldung.
Zu deiner Frage:
Nein, das ist nicht möglich, zumindest kenne ich keine Lösung dafür. Wenn du so etwas möchtest, müsstest du eine Listbox mit einem Unterformular nachbilden. Damit könnte man dann noch mehr Dinge simulieren.
Hier hatte ich mal ein Bild hochgeladen, wie so etwas aussehen könnte:
https://www.access-o-mania.de/forum/index.php?msg=167284 (https://www.access-o-mania.de/forum/index.php?msg=167284)
Knobbi38
Hallo Knobi38,
danke. Dann bleibt es wie es ist. Für mich als stark sehgeschädigten wäre es halt angenehmer gewesen.
Dann schließ ich mal hier.
Liebe Grüße
Jörg