Newsgroup: it.comp.lang.visual-basic
Titolo: [VB5] Funzioni e form con valori di ritorno

Salve,
sto cercando di implementare un programma di gestione di una videoteca per
un mio amico, sono gia a buon punto (considerato che e' il mio progetto
serio) ma sono blocatto in una funzione, in pratica:
Utente preme invio in una textbox dove digita parte del cognome del cliente
(per lo scarico della cassetta e attribuzioni varie)
a questo punto dovrei far spuntare una nuova form, ad hoc, con una listview
e una textbox che ha come valore iniziale cio' che l'utente ha digitato
nella textbox dell'altra form, fin qui nessun problema, il problema e' che
alla chiusura della form con la lista dei clienti, quando poi l'utente
seleziona un cliente, la finestra dovrebbe ritornare questo valore alla
funzione chiamante.
per ora ho risolto parzialmente con un orrendo stratagemma: alla selezione,
l'IDCliente viene copiato in una label invisibile in modo che alla chiusura
del form di selezione (che e' modale) il flusso del programma possa trovarsi
il valore nella label prestabilita, ma questo e' incredibilmente
stupido...immagino ci sia un modo piu'  "bello" di implementare cio'...
in pratica vorrei fare qualcosa del tipo:
IDCliente = ChooseClient(txtCognome.text)
Grazie mille a chi mi aiutera'...
...un po meno a chi mi ignorera' :P
niente risposte private, tnx ^_^
See Ya

 IDCliente = ChooseClient(txtCognome.text)
non e' complicato, allora, nella form di selezione dei clienti metti una
funziona pubblica del tipo:
Public Function ChooseClient(ByVal Cognome as String) As Integer (o com'e'
il tuo id utente)
    'ferma l'esecuzione finche' non viene chiusa la form
    me.Show vbModal
    ChooseClient = (id cliente selezionato)
    Unload Me
End Function
questo funziona se prendi qualche accorgimento (tieni presente che una
finestra modale smette di esserlo, e quindi l'esecuzione prosegue, anche
quando viene invocato il suo metodo Hide, oltre che l'unload):
- nel Form_QueryUnload devi testare il tipo di unload e, se corrisponde al
pulsante di chiusura sulla barra del titolo, settare Cancel = 1 ed eseguire
Me.Hide al posto dell'unload
- alla selezione dell'id utente (che io non so come funzioni, se usi
pulsanti o cosa) devi eseguire Me.Hide
dal primo form devi eseguire la funzione nel form di selezione dei clienti
in modo molto simile a come hai scritto tu:
IDCliente = frmSelClient.ChooseClient(txtCognome.text)
fammi sapere :)
ciao, assa.
--
gosclient: 
http://members.xoom.it/gosclient/
join the mailing list: 
http://groups.yahoo.com/group/gosclient/join

 ciao, assa.
Il ragionamento fila, ma la selezione del cliente avviene tramite una
listview che viene riempita di volta in volta con i nominativi dei clienti
che hanno passato il filtro, quindi non saprei come avere un ritorno...ti
pasto il codice:
'--------------------------------------------------------
Public Function FilterClients(Partial As String) As Long
Dim ItmX As ListItem
Set aRst = New ADODB.Recordset
aRst.Open "SELECT * FROM Clienti WHERE Cognome LIKE '" & Partial & "%' ORDER
BY Cognome, Nome", aCon
If aRst.EOF Then
    MsgBox "Nessuna Corrispondenza per " & Partial, vbOKOnly
    Exit Function
End If
txtFiltro.Text = Partial
aRst.MoveFirst
While Not aRst.EOF
    Set ItmX = lwFiltrati.ListItems.Add(, , aRst!IDCliente)
    ItmX.SubItems(1) = aRst!Cognome
    ItmX.SubItems(2) = aRst!Nome
    aRst.MoveNext
Wend
Me.Show
End Function
'--------------------------------------------------------
la selezione del cliente si ha con un click o un invio sulla listview...il
problema e' che non so come fare in modo che questa funzione abbia in
ritorno il valore che verra' generato da un altro evento :(
Grazie mille per la spiegazione...
See Ya

 ritorno il valore che verra' generato da un altro evento :(
allora... dunque... tu nel click e nell'invio alla listview fai eseguire il
me.hide. a quel punto il controllo ritorna alla funzione ChooseClient mentre
nella listview e' ancora selezionato un preciso cliente. ti basterà quindi
prendere l'id utente dall'item selezionato (mi sembra sia accessibile come
lwFiltrati.SelectedItem) ed associarlo al valore di ritorno della funzione.


 ciao, assa.
Magnifico, funziona :)
Grazie mille o anche di piu' :)