Gruß
Björn
als Anregung:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos _
Lib "user32.dll" ( _
ByRef lpPoint As POINTAPI _
) As Long
Private Sub DeineListBox_MouseMove(Button As Integer, Shift As Integer, _
x As Single, y As Single)
Dim pt As POINTAPI
Dim lng As Long
GetCursorPos pt
lng = Me!DeineListBox.accHitTest(pt.x, pt.y) - 1
Me!DeineListBox.Selected(lng) = True
'oder
Me.Caption = Me!DeineListBox.ItemData(lng)
'etc
End Sub
--
Grüßle vom Bodensee
Jörg Ostendorp
Access-FAQ: www.donkarl.com
Björn Benatzky schrieb:
wozu soll das gut sein? Eigentlich reicht es doch, wenn man beim Klicken
auf einen Eintrag weiß, welcher das ist.
Ciao
André
--
http://www.access-entwicklerbuch.de
http://www.access-im-unternehmen.de
Sinn und Zweck ist folgender:
Die Einträge im Listenfeld sind länger als die Breite und somit nicht
vollständig sichtbar. Da beim Auswählen / Anklicken eines Eintrages eine
Aktion folgt, sollte der Eintrag vorher bekannt sein. Das Feld kann ich nicht
größer machen, also wäre vielleicht eine Idee der SteuerelementTipp, der aber
nur den ersten Eintrag zeigt, der den Focus hat. Okay?
Björn Benatzky schrieb:
>> Björn Benatzky schrieb:
>>> Ich habe jetzt schon in mehreren Newsgroups gesucht und auch gegoogled,
>>> aber ein wirklichen Lichtblick habe ich noch nicht entdecken können.
>>> Ist es überhaupt möglich, den Fokus eines Listenfeldes mit dem Mauszeiger
>>> mitwandern zu lassen, so daß man bestimmen kann, über welchem Datensatz sich
>>> der Mauszeiger stets befindet?
>> wozu soll das gut sein? Eigentlich reicht es doch, wenn man beim Klicken
>> auf einen Eintrag weiß, welcher das ist.
>
> Sinn und Zweck ist folgender:
> Die Einträge im Listenfeld sind länger als die Breite und somit nicht
> vollständig sichtbar. Da beim Auswählen / Anklicken eines Eintrages eine
> Aktion folgt, sollte der Eintrag vorher bekannt sein. Das Feld kann ich nicht
> größer machen, also wäre vielleicht eine Idee der SteuerelementTipp, der aber
> nur den ersten Eintrag zeigt, der den Focus hat. Okay?
ist ein guter Ansatz, über den ich noch nicht nachgedacht habe. Danke
für die Anregung!
> Sinn und Zweck ist folgender:
> Die Einträge im Listenfeld sind länger als die Breite und somit nicht
> vollständig sichtbar. Da beim Auswählen / Anklicken eines Eintrages eine
> Aktion folgt, sollte der Eintrag vorher bekannt sein. Das Feld kann ich
> nicht
> größer machen, also wäre vielleicht eine Idee der SteuerelementTipp, der
> aber
> nur den ersten Eintrag zeigt, der den Focus hat. Okay?
Ist es nicht einfacher mit dem Klick und Doppelklick Ereignis zu arbeiten?
Jürgen
Mit dem Klick/Doppelklick will er ja andere Ereignisse auslösen. Aber
nicht, bevor er nicht den kompletten Inhalt der Zeile kennt. ;-)
Das was er wollte war mir schon klar.
Ich habe angenommen er wertet nur das Klick Ereignis aus.
Dann könnte er doch den Code vom Klick Ereignis in das DoppelKlick Ereignis
schreiben. Das Klick Ereignis wäre dann frei für die Vorschau...
Jürgen
Nee, sorry Jürgen, das Klick wie auch das Doppelklick Ereignis sind bereits
belegt:
Beim normalen Klick wird der ausgewählte Datensatz des Listenfelds in einer
Tabelle geschrieben, beim Doppelklick öffnet sich ein Menü zum Bearbeiten der
Einträge.
Danke Jörg, die Anregung war gut! Ich habe es jetzt wie folgt gelöst:
GetCursorPos pt
lng = Me.Mein_Listenfeld.accHitTest(pt.X, pt.Y) - 1
If lng > -1 Then
Me.Mein_Listenfeld.ControlTipText = Me.Mein_Listenfeld.Column(0, lng)
End If
Damit bekomme ich jetzt immer als TippText den Wert der Zeile des
Listenfeldes angezeigt, über der sich der Mauszeiger gerade befindet!
"Björn Benatzky" <BjrnBe...@discussions.microsoft.com> schrieb im Newsbeitrag
news:3906BA58-C783-45C5...@microsoft.com...
Funktioniert übrigens in A2003, A2007; unter XP weiß ich's nicht.
Aber unter A2000 wird bei mir kein Tipptext angezeigt, weil das accHitTest ein
Flackern hervorruft, das offenbar die Anzeige des Tipptextes unterbindet.
Ciao, Sascha
"Sascha Trowitzsch" wrote:
Ich nutze A2003 unter WinXP und es funktioniert einwandfrei. Das Flackern
erscheint deswegen, weil bei jeder Mausbewegung die Position und der Tipptext
neu berechnet wird. Wenn Du den Code wie folgt abänderst, wird der TippText
nur aktualisiert, wenn sich der Cursor auch über einer neuen Zeile befindet
und damit sich der TippText ändert:
GetCursorPos pt
lng1 = Me.Mein_Listenfeld.accHitTest(pt.X, pt.Y) - 1
If lng1 > -1 And lng1 <> lng2 Then
Me.Mein_Listenfeld.ControlTipText = Me.Mein_Listenfeld.Column(0, lng1)
lng2 = lng1
End If
Die Deklaration von lng muß im Formular und nicht in der Sub sein, sonst ist
der Wert jedes Mal weg.
Gruß
Björn
"Björn Benatzky" <BjrnBe...@discussions.microsoft.com> schrieb im Newsbeitrag
news:1595EC65-C7AF-44EC...@microsoft.com...
Ja, ich sag doch, dass es unter A2003 läuft.
Unter A2000 nicht. Es reicht ein einzelnes Hittext, um das Tipp-Popup zu
eliminieren.
Ciao, Sascha
Sascha Trowitzsch schrieb:
>> Danke Jörg, die Anregung war gut! Ich habe es jetzt wie folgt gelöst:
>>
>> GetCursorPos pt
>> lng = Me.Mein_Listenfeld.accHitTest(pt.X, pt.Y) - 1
>> If lng > -1 Then
>> Me.Mein_Listenfeld.ControlTipText = Me.Mein_Listenfeld.Column(0, lng)
>> End If
>>
>> Damit bekomme ich jetzt immer als TippText den Wert der Zeile des
>> Listenfeldes angezeigt, über der sich der Mauszeiger gerade befindet!
>
> Funktioniert übrigens in A2003, A2007; unter XP weiß ich's nicht.
> Aber unter A2000 wird bei mir kein Tipptext angezeigt, weil das accHitTest ein
> Flackern hervorruft, das offenbar die Anzeige des Tipptextes unterbindet.
ich habe gerade nochmals alle Varianten von Access 2000 bis Access 2007
getestet: es läuft überall außer unter Access 2000.
> Ja, ich sag doch, dass es unter A2003 läuft.
> Unter A2000 nicht. Es reicht ein einzelnes Hittext, um das Tipp-Popup zu
> eliminieren.
da ich kein A2K auf meine Rechner lasse, kann ich dazu leider nichts sagen
(außer Danke für den Hinweis natürlich). Björns Vorschlag wäre auch mein
erster Gedanke gewesen.
Ich weiß zwar nicht, wie lange Access die Accessibility-Geschichte schon
implementiert, denke aber kaum, daß es da eventuelle Kinderkrankheiten
gibt/gab. Die Ursache würde ich gerade bei A2K eher in der Textzuweisung an
sich oder den Mouse-Events suchen.
Letzteres überlasse ich aber gerne Dir. Wer mit A2K arbeitet, ist das
Around-Würgen ja sowieso gewohnt ;-)
Vielleicht funktionieren ja die Windows-Tooltipps, eigene, direkt aus den
Windows-Nachrichten abgeleitete Mousemove-Events, oder zur allergrößten Not
auch ein Timer anstelle der Events?
--
Grüßle vom Bodensee
Jörg Ostendorp
Access-FAQ: www.donkarl.com