Newsgroup: it.comp.lang.visual-basic
Titolo: [?3] ma porca miseria, questi ActiveX

Ciao a tutti,
sono ancora alle prese con questi "maledetti" ActiveX EXE e non riesco a
muovermi.
Ieri molto gentilmente qualcuno mi ha risposto ma....
- zerodefex: avevo già attuato la sua soluzione senza esito.
- hal 1961: ho preso il libro e l'ho letto (per ora solo le parti che mi
interessano in questo momento) ma non mi ha chiarito le cose per quello che
riguarda il passaggio dei valori (parla solo di Marshaling - teoria).
Domanda:
- se ho un ActiveX EXE modale e con un DblClick devo portare un dato all'EXE
standard, l'ActiveX EXE deve Unloadare prima di passare il valore vero???
Perchè  è l'unica cosa che mi è rimasta un po dubbia.
Ho provato anche così:
(ActiveX EXE)
Private Sub lstCli_DblClick()
    Dim pp      As CoffeeMonitor --> classe dell'ActiveX EXE
    Set pp = New CoffeeMonitor
    pp.CodiceCli = lstCli.SelectedItem  --> va alla GET
    Unload Me
end sub
(classe ActiveX EXE)
Option Explicit
Public sCod      As String
Public Property Get CodiceCli() As String
    CodiceCli = sCod
End Property
Public Property Let CodiceCli(ByVal sNew As String) ' As String
    sCod = sNew
End Property
(EXE standard)
Option Explicit
Public mcmnTest    As CoffeeMonitor
Private Sub cmdModal_Click()
    Set mcmnTest = New CoffeeMonitor
    mcmnTest.ShowForm cfeModal
    txtCli.Text = mcmnTest.sCod  --> oppure txtCli.Text =mcmnTest.CodiceCli
end sub
ma niente!!!
Grazie per le eventuali risposte e scusate se sono così "duro" a capire!!
Ciao.
PaPer.

interessano in questo momento)
Non devi leggerlo: devi _studiarlo_ ;-)
-- 
ciao, hal

 end sub
Così a occhio non stai usando le stesse variabili per leggere e scrivere.
Inoltre mi sembra che stai intrecciando un po' troppo il codice.
Leggiti anche l'help sulle proprietà "Pubblic" delle classi di un ax-exe.
Sono fondamentali.
Ciao

 standard, l'ActiveX EXE deve Unloadare prima di passare il valore vero???
Potresti:
a) non scaricare l'AxExe ma semplicemente nasconderlo;
b) usare DDE per lo scambio di dati;
c) usare un file d'appoggio per scrivere i valori;
temporizzare il refresh dell'applicazione principale per fargli recuperare i
nuovi valori con uno dei metodi di cui sopra.

 standard, l'ActiveX EXE deve Unloadare prima di passare il valore vero???
Se hai una FORM modale in un ActiveX EXE (argh!!!) hai la stessa situazione
di una normale form modale.
Se devi fare qualcosa tipo leggere un dato di una form modale, basta che
metti la form in HIDE. Quella non si scarica (mantenendo quindi il suo
"stato") però si "sgancia" dalla posizione modale.
Prova con un metodo semplicissimo:
Crea un nuovo PRJ.
Metti nella form1 una textbox e un pulsante (text1 e command1);
Poi aggiungi una nuova form (form2) e fai la stessa cosa (aggiungi un text e
un command);
Quindi, alla pressione del command1 fai la show modale della form2
Poi metti un valore nella textbox della form2 e, per leggere il testo dalla
form2 e metterlo nella text1 di form1, alla pressione del command1 su Form2,
poni Form2 in Hide
In pratica:
Codice per la form1:
  ------------------------------------
    Private Sub Command1_Click()
        Form2.Show vbModal
        Text1 = Form2.Text1
        Unload Form2
    End Sub
  ------------------------------------
Codice per la form2:
  ------------------------------------
    Private Sub Command1_Click()
        Me.Hide
    End Sub
  ------------------------------------
Fine.
E poi, fai un piacere a te stesso, non usare form negli ActiveX EXE o DLL,
non è carino e te ne accorgerai quando farai un pgm vero e complicato.
Nell'esempio Coffee di M$, la form serve, principalmente, per mettere un
timer che poi serve a prendere in giro il mondo facendoti credere che fai
una chiamata multithread ad un componente asincrono.
Ciao,
Un Dads che spera di avere capito e averti dato una mano.