habe folgendes Problem:
Ich möchte in ACCESS eine Routine aus VB6 übernehmen, die mir ein MouseIN
und MouseOUT Event bei einer Textbox zur Verfügung stellt.
Das Problem ist nun, dass ich dazu die HWND der Textbox benötige. Im
Gegensatz zu VB6 hat die Textbox in Access keine Hwnd-Eigenschaft. Wie kann
ich diese dennoch ermitteln??
Schon mal DANKE im Voraus
Artur Schmitt:
> Ich möchte in ACCESS eine Routine aus VB6 übernehmen, die mir ein MouseIN
> und MouseOUT Event bei einer Textbox zur Verfügung stellt.
was willst Du denn genau erreichen. Hilft Dir vielleicht ein MouseOver
des Controls und des umgebenden Bereiches weiter?
Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm
Bitte keine eMails auf Newsgroup-Beiträge senden.
Artur Schmitt wrote:
> Ich möchte in ACCESS eine Routine aus VB6 übernehmen, die mir ein
> MouseIN und MouseOUT Event bei einer Textbox zur Verfügung stellt.
> Das Problem ist nun, dass ich dazu die HWND der Textbox benötige. Im
> Gegensatz zu VB6 hat die Textbox in Access keine Hwnd-Eigenschaft.
> Wie kann ich diese dennoch ermitteln??
http://www.mvps.org/access/api/api0027.htm
Gruß
was ich erreichen möchte ist, dass beim eintreten mit der Maus über das
Textfeld ein anderes Steuerelemet angezeigt wird und beim Verlassen dieses
wieder ausgeblendet wird. Wie gesagt, in VB kein Problem aber in ACCESS
krieg ich es nicht hin.
Gruß
Artur
"Mark Doerbandt" <spamre...@doerbandt.de> schrieb im Newsbeitrag
news:es6gdv...@dit8.doerbandt.de...
Artur Schmitt wrote:
> was ich erreichen möchte ist, dass beim eintreten mit der Maus über
> das Textfeld ein anderes Steuerelemet angezeigt wird und beim
> Verlassen dieses wieder ausgeblendet wird. Wie gesagt, in VB kein
> Problem aber in ACCESS krieg ich es nicht hin.
Dir steht MouseMove bei der Textbox, beim Detailbereich
und beim Formular zur Verfügung.
Damit sollte sich das realisieren lassen.
Gruß
Artur Schmitt:
> was ich erreichen möchte ist, dass beim eintreten mit der Maus über das
> Textfeld ein anderes Steuerelemet angezeigt wird und beim Verlassen dieses
> wieder ausgeblendet wird.
Acki hat Dir ja schon einen Hinweis zum Handle von Access-Controls
gegeben.
Du koenntest wie schon erwaehnt mit OnMouseOver arbeiten und bei
OnMouseOver des umgebenden Bereiches das gewuenschte Element wieder
ausblenden, aber das ist bei schnellen Mausbewegungen nicht immer
zuverlaessig.
Was macht denn der Benutzer mit einem Steuerelement, das gleich wieder
weg ist - sprich, das er nie erreichen kann?
Jörg Ackermann:
> Dir steht MouseMove bei der Textbox, beim Detailbereich
> und beim Formular zur Verfügung.
> Damit sollte sich das realisieren lassen.
ja, aber ist nur eine Notloesung - wenn der Anwender die Maus schnell
wegzieht, kommt oft das MouseMove auf den Detailbereich nicht.
Gruss - Mark
Mark Doerbandt:
> Du koenntest wie schon erwaehnt mit OnMouseOver ...
arg - MouseMove.
Mark Doerbandt wrote:
> ja, aber ist nur eine Notloesung - wenn der Anwender die Maus schnell
> wegzieht, kommt oft das MouseMove auf den Detailbereich nicht.
Logisch.
Ggf. muß er noch benachbarte Controls einbeziehen.
Gruß
> was ich erreichen möchte ist, dass beim eintreten mit der Maus über das
> Textfeld ein anderes Steuerelemet angezeigt wird und beim Verlassen dieses
> wieder ausgeblendet wird. Wie gesagt, in VB kein Problem aber in ACCESS
> krieg ich es nicht hin.
Das kannst Du am bequemsten über die undokumentierte accHittest-Funktion
des Formulares und einen Timer lösen, insbesondere wenn Du ein solches
"MousOver"-Event für viele Steuerelemente benötigst:
'Im Form:
Option Compare Database
Option Explicit
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 Form_Load()
Me.TimerInterval = 10
End Sub
Private Sub Form_Timer()
On Error Resume Next
Dim pt As POINTAPI
Dim accobject As Object
GetCursorPos pt
Set accobject = Me.acchittest(pt.x, pt.y)
If Not accobject Is Nothing Then
Select Case accobject.Name
Case "Dein Controlname"
Me.Caption = "Control getroffen"
Case Else
Me.Caption = "Anderes Control getroffen"
End Select
Else
Me.Caption = "Kein Control getroffen"
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Me.TimerInterval = 0
End Sub
--
Grüßle vom Bodensee
Jörg Ostendorp
- Access-FAQ: www.donkarl.com
- my home: www.meersburg.de