Newsgroup: it.comp.appl.access
Titolo: info su proprietà di evento

Vorrei chiedervi un chiarimento...volevo impostare dinamicamente
tramite una funzione, alcune proprietà di evento tipo "onMouseDown" e
avendo letto dalla guida:
"Restituisce o imposta il valore della casella Su pulsante mouse giù
nella finestra Proprietà relativa a uno degli oggetti dell'elenco ..."
Avevo capito ke l'uso della proprietà impostava le azioni da eseguire
in corrispondenza dell'evento, ma non eseguiva l'evento stesso...in
realtà appena applico la proprietà da codice, si verifica anke
l'evento....
c'è un modo per modificare le azioni da eseguire in corrispondenza di
un evento senza scatenare l'evento stesso?

 wrote in message
news:1130264446....@g47g2000cwa.googlegroups.com

Mah.... sei stato troppo generico, devi almeno postare il codice
che stai usando, specificare se usi "Event Procedure" oppure
una chiamata ad una Funzione.....!
Insomma dacci qualche indizio per capire cosa hai fatto.
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Il mio intento era:
Sull'evento apertura di una maschera:
Private Sub Form_Load()
        Call imposta_eventi(Me)
End Sub
In un  modulo si troveremo:
Public Sub imposta_eventi(frm As Form)
Dim ctl As Control
For Each ctl In frm.Controls
    If ctl.ControlType = acLabel Then
        frm.Controls(ctl.Name).OnMouseDown = azioni_eventi(frm,
ctl.Name, 1)
        frm.Controls(ctl.Name).OnMouseUp = azioni_eventi(frm, ctl.Name,
2)
    End If
Next ctl
End Sub
Private Function azioni_eventi(frm As Form, nctl As String, stile As
Byte)
        frm.Controls(nctl).SpecialEffect = stile
End Function
l'intenzione era di impostare uno stile differente per le etichette
quando si verificavano per ognuna di esse gli eventi "MouseDown" e
"MouseUp".
In realtà appena vengono applicate le proprietà ".OnMouseDown" e
".OnMouseUp", vengono scatenati i rispettivi eventi.
Capito ora il cuore del problema?
Voglio impostare da codice le azioni da eseguire, senza ke vengano
scatenati gli eventi se non sono io a premere il pulsante del mouse...
ho provato a guardare in giro ma non ne sono venuto a capo...help

 ho provato a guardare in giro ma non ne sono venuto a capo...help
Così come stai facendo non può funzionare.
In sostanza hai commesso un errore concettuale.
La proprietà dell'Evento OnMouseDown ed anche l'altra
richiedono una stringa, mentre tu associ una funzione
diretta.
Esempio:
Me.NomeLabel.OnMouseDown="Event Procedure"
Questo equivale a far scatenare la procedura evento sulla label.
Se invece devi fare eseguire una funzione sull'evento devi scrivere
così(ricorda che non puoi passare oggetti in questo modo ma solo
variabili, quindi scordati la Form, ma userai il Form.Name):
Me.NomeLabel.OnMouseDown="=NomeFunzione(" & chr(34) & frm.Name & chr(34)
& ")"
La funzione sarà
Public Function NomeFunzione(mstrFrm as string)
   MsgBox mstrFrm 
End Function
ecc.....!!!!


grazie molitissimo mi hai risolto il problema :-D

....andando avanti mi è venuto in mente un altro domandone:
Se utilizzo
Public Sub imposta_eventi(frm As Form)
Dim ctl As Control
For Each ctl In frm.Controls
    If ctl.ControlType = acLabel Then
        frm.Controls(ctl.Name).OnMouseDown = "=azioni_eventi(" &
Chr(34) & frm.Name & Chr(34) & ", " & Chr(34) & ctl.Name & Chr(34) & ",
2)"
    End If
Next ctl
End Sub
Public Function azioni_eventi(mfrm As String, nctl As String, stile As
Byte)
    Forms(mfrm).Controls(nctl).SpecialEffect = stile
End Function
Avendo l'evento onmousedown questi argomenti
button As Integer
Shift As Integer
X As Single
Y As Single
come faccio a riconoscere quale pulsante del mouse è stato premuto?

 wrote in message
news:1130405580....@z14g2000cwz.googlegroups.com

Non puoi poichè se non passi per l'Event Procedure non hai modo
di sapere quale tasto è stato premuto.
La soluzione sarebbe di gestire il tutto con una Classe ed una
Collection, ma non sò quanta confusione ti farei spiegandotela.
Credo che il Demo che trovi nel materiale CISA1, nel sito
di KARL, realizzato da NAMOR(Marco Pizzamiglio)
sia esplicativo in modo chiaro e semplice.
Quando hai un pò di chiarezza sulle classi vedi anche questo
che sicuramente può spaventarti per la complessità, ma è
molto flessibile:
http://www.mantuanet.it/alessandro.baraldi/
Sezione GENERAL [SEZIONE DI CONTROLLI AVANZATI] 
2.2 Validazione DataEntry(uso avanzato Classi) 
Ciao


Grazie moltissimo per il consiglio sono andato sul sito di Karl ed ho
scaricato l'articolo di Marco Pizzamiglio, ke devo dire è stato
particolarmente illuminante...per quanto riguarda il tuo file, già lo
avevo scaricato ma per il momento... meglio cominciare a camminare ke a
correre già ci pensi tu!!!

...continuando con i dubbi
dopo aver creato il modulo di classe ke imposta gli eventi per gli x
elementi (x istanze), ho creato le sub evento nel modulo di classe come
sotto:
Nel modulo di classe ho ad esempio:
Public Function eventi(x_elemento As Label)
'funzione Pubblica ke viene chiamata dalla
'maschera in cui risiedono gli "x_elemento"
'e ke imposta gli eventi per le varie istanze
'di x_elemento
x_elemento.OnMouseDown = "[Event Procedure]"
End Function
Private Sub x_elemento_MouseDown(Button As Integer, Shift As Integer, X
As Single, Y As Single)
istruzione1
.............
istruzione10
call pippo()
End Sub
Private Sub pippo()
istruzione1
.............
.............
istruzione20
End Sub
Domande:
1) La sub "pippo" se ho 20 istanze mi viene replicata 20 volte?
2) Se la risposta sopra è Si, per ottimizzare il codice ke si dovrebbe
fare?:
	a)la sub andrebbe messa in un modulo standard separato e dichiarata di
tipo Public
	b)la sub andrebbe messa nel modulo della form e dichiarata di tipo....
	c)ci sono altre soluzioni più performanti?