[Access] Coördinaten .OnMouseDown

Pagina: 1
Acties:

  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 02-04 21:03
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!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:54
Zonder Access te kennen, ik praat hier Excel:
Er bestaat in Excel een MouseDown event voor het hele form en een MouseDown per control, labels in jouw geval.
Ook de MouseDown voor individuele controls geeft een X en een Y. Het kan dat die relatief (in de control worden gegeven.
Dat kan je ondervangen door iets als
Mijnlabel_MouseDown(button,Shift, X, Y)
echteX = X + mijnlabel.left
echteY = Y + mijnlabel.top
Showorderinfo(EchteX, echteY)
End sub

  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 02-04 21:03
Ik kan het nu niet testen, omdat ik geen officecd kan vinden :X

Sowieso bedankt voor het meedenken! Toch denk ik niet dat dit gaat werken, omdat ik denk dat het MouseDown event alleen wordt uitgevoerd als er geen objecten tussen de muis en het form staan..

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

MichielPH schreef op woensdag 11 januari 2006 @ 11:49:
Dit [eventprocedure] kan ik echter niet gebruiken, omdat er meerdere labels gemaakt worden en dus naar een specifike functie moet verwijzen. (Toch?) [...]
Dat snap ik dus niet. Desnoods maak je gebruik van een soort subclassing: [rml]_heretic_ in "[ VBA-Excel] Dit moet toch sneller kunnen..."[/rml]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:54
MichielPH schreef op woensdag 11 januari 2006 @ 21:45:
Ik kan het nu niet testen, omdat ik geen officecd kan vinden :X

Sowieso bedankt voor het meedenken! Toch denk ik niet dat dit gaat werken, omdat ik denk dat het MouseDown event alleen wordt uitgevoerd als er geen objecten tussen de muis en het form staan..
Dat is nu juist wat ik stel.
Er zijn een aantal MouseDown events:
Form.MouseDown wordt iig getriggerd als je op een leeg stuk form klikt. Misschien ook als je ubverhaubt op het form klikt, ook al staat er een label voor. Maar dat maakt hierbij niet uit, want wat je nodig hebt is:
Label.MouseDown, die wordt getriggerd als je op het label klikt. En je hebt er dus voor ieder label 1.

Maar, misschien kan je even uitleggen wat je nu eigenlijk wilt met die X en die Y, want dat is een beetje mistig. Wil je je orderinfo ermee op de goede plek laten zien oid?
En, met Niesje: probeer
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?
eens in andere woorden te omschrijven, want het is ook mij niet duidelijk wat er niet zou kunnen, waarom dat erg is en waarom dat niet kan.

  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 02-04 21:03
Kort omschreven: Als stageopdracht maak ik in Access een database voor de afdeling planning. Met VBA genereer ik een formulier met een onbepaald aantal orders, bijv. 60 orders.
Deze orders laat ik automatisch rangschikken. Ze moeten echter naderhand verplaatst kunnen worden, dus ik wil ze kunnen slepen. Daar heb ik de coördinaten voor nodig.
onkl schreef op donderdag 12 januari 2006 @ 12:41:
Label.MouseDown, die wordt getriggerd als je op het label klikt. En je hebt er dus voor ieder label 1.
Dit gaat dus niet op, doordat ik niet weet hoeveel orders er zijn. En efficient is anders.

Met 'For Each Control' zoek ik op welke label aangeklikt is. In het voorbeeld wat niesje gaf zag ik echter dat het beter kan. Ik ben nu bezig het voorbeeld van _herretic_ werkend te krijgen. In Excel deed hij het goed, in Access gebeurt er nog niets als ik een knop indruk.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:54
In het geval van een onbepaald aantal elementen is de oplossing van Niesje/_heretic_ inderdaad een uitstekende en kan ik uit levendige ervaring mijn eerdere ideeën afraden :X
Pagina: 1