Newsgroup: it.comp.lang.visual-basic
Titolo: Exe normale, classe privata, metodo pubblico, parametro con struttura complessa

Scusate il subject lungo ma non sapevo proprio come intitolarlo sto post..
Come mai creando un nuovo progetto di tipo standard exe in cui avendo una
classe (obbligatoriamente) di tipo privato, se essa espone un metodo
pubblico con dei parametri semplici (string, double, ecc.) tutto ok, dal
momento che espongo un parametro di un mio type anch'esso pubblico visual
basic dice che non posso perchè la classe è privata. Va be mi sta bene, però
essendo un exe "normale" non posso cambiare le proprietà della classe. Se
cambio l'exe in exe activex allora tutto fila liscio (imposto la classe come
public not creatable).
La mia domanda è: posso creare uno standard exe con un metodo pubblico
avente come parametro una struttura complessa attraverso qualche 'gabola'??
E poi, perchè nel Exe activex non posso inserire nei parametri un winsocket
oppure un timer?C'è modo di poterlo fare? Attualmente ho impostato il
parametro come object, ma logicamente perdo tutti i metodi e proprietà in
fase di programmazione..
Grazie mille a tutti
Ciao
oZ

 fase di programmazione..
Su due piedi non so se esiste di meglio, ma anche qui un paio di idee:
1) Puoi "fregartene"; ovvero mantieni il parametro Object e internamente
alla funzione lo assegagni subito ad una variabile locale con il tipo
corretto; intercettando l'eventuale errore puoi notificare al chiamante che
il tipo non e' corretto, altrimenti vai avanti.
2) Puoi incapsularli in una classe pubblica "contenitore" e utilizzare
quella come parametro.
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 quella come parametro.
Per far questo però devo cambiare il tipo di progetto...
Ciao
Grazie mille..
oZ

 Per far questo però devo cambiare il tipo di progetto...
No, ho sbagliato io a scrivere "pubblica"... se il passaggio di parametro e'
interno all'applicazione la classe contenitore puo' essere privata
Tra l'altro nota che in ogni caso utilizzare direttamente componenti nativi
di VB come membri pubblici di una classe ti "condanna" a possibili
limitazioni, per esempio il fatto che il tuo ActiveX possa essere usato in
maniera confortevole solo da client scritti in VB, cosa che di per se non e'
vera; se incapsuli queste cose in classi tue, faciliti la vita a eventuali
integrazioni di terze parti...


 integrazioni di terze parti...
Sono d'accordo, ma questo non rientra nel mio caso, la classe serve solo per
un progetto e (purtroppo/come sempre) non ho il tempo per fare una cosa ad
doc pensando ad una futura integrazione con altre tecnologie..
Ciao grazie mille per le risposte...
oZ

 objForm.SetTimer(blnAttiva as boolean) ?
No, non devi passare in giro oggetti di questo tipo... il padrone
"materiale" e' una form, ma solo se vedi la cosa internamente al programma
A; l'applicazione client B non dovrebbe assolutamente conoscere questi
dettagli e fare riferimento solo a classi progettate per lo scopo, quindi
tutt'al piu' la chiamata sara' qualcosa tipo:
objA.SetTimer(True)
dove objA e' un'istanza di una classe a tua discrezione fornita da A, e
sara' solo un problema di questa classe sapere che il timer e'
effettivamente un controllo Timer, messo su una qualche Form


Azz c'č ne di roba da imparare da te :))
 
 :-) Per quanto riguarda il timer, ti consiglio perň di lasciar perdere
il controllo e di creare una tua timer procedure: molto piů semplice da
gestire, anche nel tuo caso.
Il funzionamento č molto semplice:
hai bisogno delle dichiarazioni di:
StartTimer
KillTimer
WM_Timer
Cerca su MSDN "TimerProc" per avere il prototipo della callback.
Cosě, volendo, lo start ed il kill possono essere metodi
dell'interfaccia pubblica del tuo componente (se č questo che volevi),
ma non hai bisogno di un contenitore per il controllo timer.
Ciao,
Moreno
-- 
sirri at morenosoft dot com
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

 classe nei due progetti.
La classe è un file condiviso tra i due progetti, la usano tutti e due..
Ovvero clsSocket è stata aggiunta ad entrambi i projects..
Ciao
oZ

Ovvero clsSocket è stata aggiunta ad entrambi i projects..
brrr.... no, sono certo che non sia così... c'è stato sicuramente un
errore nella trasmissione del messaggio. Prego, ripetere invio... :-)
