Newsgroup: it.comp.lang.visual-basic
Titolo: difficile: controindicazioni di WM_SETTEXT ??

salve
per far comunicare due form, sto usando un textbox invisibile su uno dei
due, il quale riceve un valore di testo come risposta di un'operazione che
si effettua quando si carica il secondo form.
l'handle del textbox č messo in una variabie public.
il problema č questo:
nel codice del secondo form c'č un ciclo for next, all'interno del quale
avviene, a volte si e a volte no, la scrittura (mediante wm_settext) di un
valore "provvisorio" sul text box del primo form.
alla fine del ciclo, perň, stranamente, il textbox in questione č
assolutamente vuoto.
mettendo un sacco di debug, ho constatato che fino a un secondo prima
funziona tutto bene, poi, stranamente, in mancanza di ulteriori istruzioni
che scrivano sul text box, questo viene ugualmente riscritto.
la cosa funziona, grosso modo, cosě:
Form1
sub command1_click
Handle=text1.hwnd
form2.show vbmodal
end sub
*****************
Form2
sub command2_click
dim TestoProvv as string
for J=1 to x
Testoprovv=una certa cosa
if condizione then sendmessage Handle,WM_SETTEXT,byval clng(0),byval
testoprovv
next J
debug.print testoprovv            ' corrisponde al valore esatto
debug.print form1.text1.text    ' č vuoto !!!!!!!!!!!
unload me
end sub
in poratica dovrebbe funzionare, e io, passaggio per passaggio, controllo
che testoprovv corrisponda a quello che mi serve, e che text1.text
corrisponda a testoprovv.
solo che poi alla fine testoprovv č corretto, mentre text1.text č vuoto...
ho pensato, magari, che ci sono delle "controindicazioni" nell'uso ripetuto
di wm_settext... č cosě oppure no? qualcuno ne sa qualcosa?
grazie
MarioH

 testoprovv
ma wParam non dovrebbe essere la lunghezza del buffer puntato da lParam?
Faber

Ma non č piů facile referenziando i soli oggetti?
Perché usare un cannone per ammazzare una mosca?
 Form1
 sub command1_click
    Form2.show vbmodal
end sub
 *****************
Form2
 sub command2_click
    dim TestoProvv as string
    for J=1 to x
        Testoprovv=una certa cosa
        if condizione = then _
            Form1.text1.text = testoprovv
    next J
end sub
Se il tuo esempio č esatto, le API sono inutili...
-> GbC
http://www.chiappori.net
http://www.gbcweb.com

             Form1.text1.text = testoprovv
in realta, del Form1,, ce ne possono stare 4-5 attivi nello stesso
momento... per questo mi serve qualcosa che identifichi solo quel controllo.
e poi ce un'altra cosa. la sub che č nel form2 deve essere "generale". fa un
servizio che puo essere richiamata da punti diversi del programma, quindi da
form diversi, e deve restituire il risultato ad un controllo che non č
sempre lo stesso.
MarioH


su MSDN c'è scritto che deve essere 0, aspe mò controllo meglio...
(tic tac tic tac ....)
no, wparam deve essere 0...
(tutto in tempo reale...)
MarioH

ps: ho commesso una valanga di errori... scrivo troppo veloce e le dita si
incartano... ::))))

...mettete dei fiori nei vostri cannoni


Allora...
Parametrizza la sub...
***
FormX
sub command1_click
    Verifica Me.TextX
end sub
***
In un modulo .bas metti
public sub Verifica(pippo as textbox)
    'tuo codice
    pippo.text = risultato
end sub
***
Sempre senza cannone...
Puoi chiamare Verifica da qualsiasi form...


o meglio
sub command1_click
    Verifica FormCheVuoi.Text1
end sub
il resto uguale...


 end sub
u è vero non ci avevo pensato...
cmq ho risolto, e sai come?
ho messo  il sendmessage wmsettext alla fine, dopo il ciclo for...next
nel ciclo for-next faccio "riempire" il valore "provvisorio" e poi lo sputo
sul textbox... ::)))
in realta il problema era proprio quello... troppi wmsettext lo facevano
incasinare... non ho capit operche ma è cosi... infatti ora funziona da
dio...
cmq la tua soluzione è utile e la userò sicuramente in futuro, grazie
MarioH

 cmq ho risolto...
</CUT>
meglio così...
io (per cultura e formazione) tendo a fare le cose più semplici (in
termine di codice) possibile...
a fronte di una funzione API e di una funzione interna VB preferisco
sempre la seconda...
maggiore leggibilità, maggiore velocità del codice (nel nostro caso),
minore dimensione del codice eeguibile... inZomma... amo le cose
semplici...
