anoniem Geplaatst: 11 januari 2006 Delen Geplaatst: 11 januari 2006 Hey, Ik ben in MS Access 2000 bezig met het ontwikkelen van een database. Met VBA genereer ik een formulier waar meerdere labels op staan. Ik stel bij elk label in dat .OnMouseDown '=ShowOrderInfo()' is. Als je op een label klikt wordt de functie uitgevoerd, dit gaat goed. Nu wil ik weten welke coördinaten de muis heeft. Als je er de standaard '[Gebeurtenisprocedure]' gebruikt, kan je bij het event MouseDown oa. de variabelen X en Y opvragen. Dit kan ik echter niet gebruiken, omdat er meerdere labels gemaakt worden en dus naar een specifike functie moet verwijzen. (Toch?) Hoe kom ik toch achter de oördinaten? Hoe moet ik dit oplossen? Bedankt! Quote Link naar reactie
anoniem Geplaatst: 11 januari 2006 Auteur Delen Geplaatst: 11 januari 2006 Je kun toch ook elke label naar die specifieke functie laten verwijzen?? Dan hoef je niet elke x de coordinaten te hebben Quote Link naar reactie
anoniem Geplaatst: 11 januari 2006 Auteur Delen Geplaatst: 11 januari 2006 Ik wil juist de coördinaten hebben. Alle labels verwijzen nu naar '=ShowOrderInfo()', waardoor ik ze niet op kan vragen. Quote Link naar reactie
anoniem Geplaatst: 11 januari 2006 Auteur Delen Geplaatst: 11 januari 2006 Wat ga je dan met die coordinaten doen? In een array opzoeken op welk label was geklikt? In dat geval kun je beter een parameter voor de functie maken en bij ieder label de labelnaam meegeven: Public Function ShowOrderInfo(labelnaam As String) Select Case labelnaam Case "label1" ... Case "label2" ... Case "label3" ... End Select End Function =ShowOrderInfo("label1") =ShowOrderInfo("label2") =ShowOrderInfo("label3") Coordinaten opvragen is denk ik wel achter te komen als ik zo de resultaten op google zie nav "access coordinates form" Quote Link naar reactie
anoniem Geplaatst: 12 januari 2006 Auteur Delen Geplaatst: 12 januari 2006 Ben nog altijd bezig met die planning, dus het zullen altijd minimaal 40 orders zijn. Ik zoek met [i:9a779c2b1f]For Each Control[/i:9a779c2b1f] op welk label het is. De orders moeten verplaatst kunnen worden, dus wil ik dat de labels gesleept kunnen worden. Met [i:9a779c2b1f]_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)[/i:9a779c2b1f] gaat dit prima. Quote Link naar reactie
anoniem Geplaatst: 12 januari 2006 Auteur Delen Geplaatst: 12 januari 2006 Als je onMouseDown een functie wil aanroepen, dan kan dat ook vanuit de gebeurtenisprocedure zelf. Dat hoeft dus niet per se via de expressie die je nu gebruikt. Ipv: =ShowOrderInfo() Gebruik je dan dus een procedure waarin je de X en Y meegeeft aan de functie: Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ShowOrderInfo X, Y End Sub Public Function ShowOrderInfo(X As Single, Y As Single) ... End Function Quote Link naar reactie
anoniem Geplaatst: 12 januari 2006 Auteur Delen Geplaatst: 12 januari 2006 Er staan echter een onbepaald aantal labels op het formulier. Er zijn vaak rond de 40 tot 60 orders. Op Tweakers heb ik voor Excel [url=http://gathering.tweakers.net/forum/list_message/24519500#24519500]een voorbeeld[/url] gevonden, waar ze de labels aan een klassenmodule toewijzen. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen