Newsgroup: it.comp.appl.access
Titolo: inserire pulsanti in una funzione

E' possibile inserire una form con pulsanti di comando in una funzione?
Tipo la funzione msgbox(), inputbox()..
Ci ho provato, senza alcun risultato.
Ho provato a creare la sola form ma non riesco a trasferire la scelta
effettuata, nemmeno creando una variabile pubblica.
In sostanza, qual'� la logica con cui � creata la funzione msgbox() ?
Ho cercato un po' dappertutto ma non riesco a trovare alcunch�..  :-(
Grazie per l'eventuale risposta.
Antonio 
 

 In sostanza, qual'� la logica con cui � creata la funzione msgbox() ?
 
la funzione msgbox, quando la invochi, fa solo uscire un box con dentro 
un messaggio testuale e aspetta finche' la chiudi. fine.
 
quindi la funzione accetta solo un testo letterale
 
msgbox("questo e' il mio messaggio")
 
oppure una variabile stringa
 
dim miotesto as string
miotesto = "questo e' il mio messaggio"
msgbox(miotesto)
 
e serve solo per mandare messaggio si servizio, non per aprire altre 
maschere a cascata.
 
Se vuoi che premendo un pulsante generico ("Cmd_MioPulsante") di comando 
ti si apra una form, devi solo associare all'evento su click del 
pulsante un codice che dica:
 
Private Sub Cmd_MioPulsante_Click()
     DoCmd.OpenForm "miaMaschera"
End Sub
 
Non so se questo risponde alla tua domanda.
 
ciao
 
 
 
 
-- 
Guillotin n'avait coup� trop peux

 In sostanza, qual'ïŋ― la logica con cui ïŋ― creata la funzione msgbox() ?
 
la funzione msgbox, quando la invochi, fa solo uscire un box con dentro
un messaggio testuale e aspetta finche' la chiudi. fine.
 
quindi la funzione accetta solo un testo letterale
 
msgbox("questo e' il mio messaggio")
 
oppure una variabile stringa
 
dim miotesto as string
miotesto = "questo e' il mio messaggio"
msgbox(miotesto)
 
e serve solo per mandare messaggio si servizio, non per aprire altre
maschere a cascata.
 
Se vuoi che premendo un pulsante generico ("Cmd_MioPulsante") di comando
ti si apra una form, devi solo associare all'evento su click del
pulsante un codice che dica:
 
Private Sub Cmd_MioPulsante_Click()
     DoCmd.OpenForm "miaMaschera"
End Sub
 
Non so se questo risponde alla tua domanda.
 
ciao
 
 
 
 
-- 
Guillotin n'avait coupïŋ― trop peux 
 

Ho la sensazione che stai parlando di una maschera definita anche "modale"
-- popup -- si
-- scelta obbligatoria -- si
 
 
attento pero,  prima di aprirla devi metterci dentro 
un pulsante necessario poi alla sua chiusura,
 
perché finche lei è aperta non potrai usare 
null'altro del computer e senza il pulsante di chiusura 
ti resterebbe solo il   Ctrl + alt + canc
 
Facci sapere
 
.

Ciao Mancini, grazie per la risposta...
Non credo sia centrato il problema...
Quello che tu proponi rimane comunque una maschera,
che non ritorna una valore come tutte le funzioni()...
In sostanza, immaginiamo che la funzione msgbox()
non esistesse e noi la vorremmo creare...
Quale potrebbe essere il codice ?
Antonio
 
"Mancini"  ha scritto nel messaggio 
news:d434d83b-d7ce-452d...@googlegroups.com...
 
Ho la sensazione che stai parlando di una maschera definita anche "modale"
-- popup -- si
-- scelta obbligatoria -- si
 
 
attento pero,  prima di aprirla devi metterci dentro
un pulsante necessario poi alla sua chiusura,
 
perch� finche lei � aperta non potrai usare


 che non ritorna una valore come tutte le funzioni()...
 
Secondo me ti sta sfuggendo qualcosa  ( oppure non ho capito la domanda )
Cosa intendi dire per "ritorna una valore" ?
 
- Apri una maschera modale
-- ci metti dentro 10 caselle di testo
-- scrivi dei testi o numeri nelle 10 caselle di testo
-- con codice puoi fare la validazone dei dati inseriti e qunt'altro necessario
-- ci metti un pulsante che fa queste cose
--- converte il .Value delle caselle di testo in funzioni pubbliche
--- se non ti serve la funzione pubblica utilizzi direttamente il  .Value
--- chiude la maschera modale
 
Questo è gia molto di più di quello che puo fare un 
- MsgBox che restituisce un True/False
- ImputBox che restituisce un solo valore liberamente scrivibile dall'utente
 
Facci sapere
 
 

Mi faccio 2 correzioni  :(   :( 
 
rileggendo la tua prima domanda mi sembra che tu hai del codice che si sta eseguendo e vuoi a un certo punto che il codice si interrompa per prendere un imput dall'utente 
 
allora la mascherina modale ( che a parer mio è adatta ) la devi aprire in formato "Dialogo"  ( acDialog ) 
 
poi non è vero che MsgBox ti restituisce un True/False 
bensi restituisce un Integer 
e puoi avere 3 risposte   Si/No/Annulla  ( 6, 7, 2 ) 
 
 
quindi forse ti basta anche un semplice MsgBox 
 
valuta questo codice di esempio 
[code] 
Sub Prova()
' ..............................
 
Dim n1 As Integer
Dim n2 As Integer
n1 = 9
n2 = 3
 
'   Si=6     No=7    Annulla=2
 
Dim strMsg As String
strMsg = "I tuoi valori sono " & n1 & " e " & n2 & vbNewLine & " -- Per sommarli rispondi 'Si' " & vbNewLine & " -- Per moltiplicarli rispondi 'No' " & vbNewLine & " -- Per sottrarli rispondi 'Annulla'"
 
Dim mb As Integer
mb = MsgBox(strMsg, vbYesNoCancel)
 
 
Dim Risultato As Integer
    If mb = 6 Then Risultato = n1 + n2
    If mb = 7 Then Risultato = n1 * n2
    If mb = 2 Then Risultato = n1 - n2
 
MsgBox Risultato
 
' .................................
 
End Sub
[/code] 
 
.

 che non ritorna una valore come tutte le funzioni()...
 
Secondo me ti sta sfuggendo qualcosa  ( oppure non ho capito la domanda )
Cosa intendi dire per "ritorna una valore" ?
 
- Apri una maschera modale
-- ci metti dentro 10 caselle di testo
-- scrivi dei testi o numeri nelle 10 caselle di testo
-- con codice puoi fare la validazone dei dati inseriti e qunt'altro 
necessario
-- ci metti un pulsante che fa queste cose
--- converte il .Value delle caselle di testo in funzioni pubbliche
--- se non ti serve la funzione pubblica utilizzi direttamente il  .Value
--- chiude la maschera modale
 
Questo � gia molto di pi� di quello che puo fare un


 scritta la msgbox().
 
 
Il codice con cui è stata scritta la MsgBox proprio non lo conosco
e non saprei dove andarlo a pescare.
Forse il grande Karl Donauber :) potrebbe esserci di aiuto
-- ( ma dubito che anche lui possa conoscerlo )
 
 
Per quanto Non rilevante possa essere ho la sensazione che il tasto di 
chiusura non ritorna sempre il valore 0,   da alcune frettolose prove sembra
che ritorna il valore del tasto "Si" che è variabile in funzione
di quanti tasti ha la MsgBox
 
 
Non vorrei sembrare un vecchio rincitrullito,  ma se io fossi un programmatore
e dovessi inventare una MsgBox farei una mascherina 
- semplice
- piccola
- centrata nello schermo  ( Magari spostata un po in alto a Sx )
- di dialogo ( quindi blocca il codice gia in esecuzione )
- con dentro i pulsanti che mi servono
- con la grafica che voglio
Da un test che ho fatto NON serve che sia PopUp e a SceltaObbligatoria
e sufficiente che sia "di Dialogo" 
 
 
.
 

 
 
"Mancini"  ha scritto nel messaggio 
news:81ff8d82-adac-4404...@googlegroups.com...
...cut
Non vorrei sembrare un vecchio rincitrullito,  ma se io fossi un 
programmatore
e dovessi inventare una MsgBox farei una mascherina
- semplice
- piccola
- centrata nello schermo  ( Magari spostata un po in alto a Sx )
- di dialogo ( quindi blocca il codice gia in esecuzione )
- con dentro i pulsanti che mi servono
- con la grafica che voglio
Da un test che ho fatto NON serve che sia PopUp e a SceltaObbligatoria
e sufficiente che sia "di Dialogo"
 
Ciao Mancini, grazie per la risposta.
Quello che dici va benissimo..., è uno dei modi per aggirare il problema..
La msgbox() ritorna subito un valore: Var = msgbox()
La maschera "Dialogo" NON ritorna un valore, quindi occorre fare un
passaggio ulteriore:
Occorre avere una variabile pubblica che si riempie alla
pressione dei comandi della maschera "Dialogo" e che viene letta poi
da dove è stata lanciata la maschera "Dialogo"
Antonio
 
 
 
 
. 
 

 Occorre avere una variabile pubblica che si riempie alla
 
 
Si hai ragione,  una MsgBox ti restituisce una variabile che puoi usare 
successivamente in tutta la routine per quanto lunga e complessa sia
 
Del resto "Noi comuni mortali" non conosciamo il codice segreto 
della MsgBox quindi con la fantasia e quel poco di esperienza e 
capacita che abbiamo cerchiamo di fare qualcosa 
che sia addirettura migliore
 
 
Se usi un Access 2007 o superiore potrai trarre giovamento 
dalle "TempVars"  che sono appunto variabili globali della 
applicazione che puoi creare solamente con uua riga di codice
nella maschera x e utilizzare con una altra riga di codice 
nella maschera y .....
 
.

 Quello che dici va benissimo..., � uno dei modi per aggirare il problema..


 ...
 
Ciao,
 
invecchiando ho giï¿œ perso ca. 2 cm di grandezza (di costruzione)
ma non quel secondo "au" nel nome. ;-)
 
No, non conosco il codice del MsgBox. Questi codici (in C/C#)
sono segreti aziendali della MS. Access e VBA hanno due
funzioni diverse. Puo darsi che invece di dissegnare proprie
maschere ecc. siano solo "layer" che chiedono funzioni di Windows.
Questo si puo fare anche in VBA con poco codice API.
 
p.e. la libreria User32.dll di Windows ha sempre avuto una
funzione Messagebox come descritto nel MSDN o p.e. qui:
http://www.tek-tips.com/faqs.cfm?fid=4699
 
 
Personalmente ho solo usato la funzione della User32 una volta
in un programma multilinguale perchï¿œ la Msgbox di VBA ha avuto
problemi con lettere cirilliche. Altrimenti ho sempre usato o
le funzioni di Access/VBA o una semplice maschera.
 
Nel web ci sono sicuramente esempi per l'uso delle maschere,
come impaccare tutto in una funzione con valori di ritorno ecc.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
Access Lobby: 
http://www.AccessDevelopers.org
 

 ma non quel secondo "au" nel nome. ;-)
 
Woww!!  chiedo perdono per l'errore :(
 
Adesso che mi ci soffermo capisco che il tuo 
nome signofica  "Costruttore del Danubio"  :)
 
.

 nome signofica  "Costruttore del Danubio"  :)
 
Piuttosto ï¿œ "Contadino del Danubio".
