Newsgroup: it.comp.lang.visual-basic
Titolo: [?] istanzio un oggetto o 2?

ciao a tutti.
mi sono preso 10 minuti di pausa e, non trovando un post davvero
interessante a cui rispondere --non me ne vogliano la valangata di
newbie che chiedono delle cretinate e che usano una copia pirata di vb
senza essersi nemmeno preoccupati di procurarsi pure l'help in linea--
mi e' venuta voglia di fare una domanda che mi attanaglia da un po'...
la textbox e' simpatica ma fa un terzo delle cose che ho bisogno.
allora mi sono scritto una classe clsTesto che ha un membro di tipo
textbox ed un po' di proprieta' e metodi per fare quello che mi serve.
in clstexto.cls ho:
[...]
Public WithEvents txtBox As TextBox
[...]
poi, nel programma che utilizza la classe, inserisco una textbox di
nome txtRevisione e, ad esempio,
[...]
Dim Revisione As clsTesto
[...]
    Set Revisione = New clsTesto
    Set Revisione.txtBox = txtRevisione
    Revisione.KeyCheck = BTB_ALPHA
    Revisione.CaseCheck = BTB_UPPERCASE
[...]
ok, ora la domanda e': se e' vero che ogni controllo e' un oggetto,
quanti oggetti ho istanziato nel mio codice? secondo me, ne ho 2.
il primo e' la "semplice" textbox che chiamo txtrevisione e che
disegno a design time nell'ide di visual basic, mentre il secondo e'
l'oggetto revisione, ti dipo clstesto.
se ho ragione, avere il doppio degli oggetti necessari puo'
rappresentare un problema? mi pare di ricordare che in un form possano
starci al massimo 255 controlli. giusto? oppure erano 255 oggetti?
spero --e credo-- la prima: in quel caso, a parte lo spreco non dovrei
avere altri problemi.
tutto il dubbio e la curiosita', a parte per motivi culturali, mi
vengono perche' in un form di textbox ne ho 19 --naturalmente ognuna
con il suo oggetto di tipo clstesto associato-- e mi e' piu' comodo
chiamarle ognuna col suo nome piuttosto che usare un/degli array di
textbox, ma questo form e' figlio di un mdiform e trovarsi con 8/10
figli e' decisamente facile --nel mio programma--. quindi avrei gia'
"spregato" piu' di 200 oggetti. considerando che quel down di win98se
--che non va tanto peggio di altri s.o. ben piu' recenti...-- ha tante
cose che vanno ancora a 16bit, finire le risorse di sistema anche
lanciando 3 programmini puo' essere decisamente facile.
ho detto un sacco di idiozie? :)
saluti 2 oggetti?
-- 
Gianni Rondinini
Icem s.r.l.
Tel: 
+39 0545 78036
Fax: 
+39 0545 78727

 saluti 2 oggetti?
Text1.Text="Saluti a te"


riflessioni più che giuste, come diceva Marg.....
mi stavo chiedendo una cosa, però: sarebbe forse più utile creare un
controllo OCX da mettere su un form che si "aggancia" a tutte le texbox
presenti sul form stesso......
in questo modo, potrei avere un solo controllo creato da te, che "governa"
il funzionamento di tutte le textbox presenti sul form......
credo che ci siano alcuni eventi che si scatenano anche quando stai
lavorando in fase di progettazione......immagina di poter gestire un
UserControl_Initialize in fase di progettazione....
good coding!!!
--
Damiani Liborio Igor
ig...@igordamiani.it
 - 
soft...@igordamiani.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

 in clstexto.cls ho:
scusa un'attimo...
che problema hai con un'ocx?

che problema hai con un'ocx?
vedi risposta ad igor.


controllo OCX da mettere su un form che si "aggancia" a tutte le texbox
considerazione giusta, ma gli ocx li evito fin quando posso perche'
voglio evitare di registrare qualsiasi cosa e di "sporcare" il
registro.
inoltre, la classe viene compilata nell'eseguibile ed ogni volta che
modifico qualcosa ricreo tutto e mi porto dietro la roba nuova. gli
ocx hanno l'annosissimo problema delle revisioni, delle versioni,
delle possibili incompatibilita' e quant'altro, cosa che con la classe
evito --a fronte di un po' di oggetti "duplicati"--.
e poi hpl mi ha fatto 2 scatole tante con le classi che oramai che ho
imparato come si usano, devo usarle per forza ;D
saluti.


 ocx hanno l'annosissimo problema delle revisioni, delle versioni
E se tu creassi un ctl dentro il progetto stesso dell'exe? Avresti risolto
il problema, in quanto l'ocx verrebbe compilato dentro l'eseguibile.

il problema, in quanto l'ocx verrebbe compilato dentro l'eseguibile.
ok, questo potrei farlo.
ma dopo come farei per avere un solo oggetto ogni textbox piuttosto
che due?
oppure: come faccio a fare un controllo che si sovrappone a tutte le
text box di tutti i form del progetto?
forse, ma forse, istanziare quel ctl una volta ogni form non sarebbe
tutto questo risparmio di risorse, a meno di non avere almeno una
decina di textbox per form.
diciamo che se ho 6 textbox e ipotizzo di avere --ragionevolmente--
fino a una ventina di form figli, passando da 6 oggetti "doppi" a 1
multiplo non faccio un gran passo avanti, anche considerando che se
l'oggetto che si sovrappone alle varie textbox e' uno solo e quindi
quando fa i suoi bravi conticini deve anche "capire" per quale textbox
sta lavorando. oddio, una sciocchezza forse, ma visto che ne parliamo
per ottimizzare le risorse magari e' importante.
o no?


 o no?
Imho,
se crei una classe, e dalla classe istanzi un'oggetto per ogni textbox,
allora ti ritrovi con ad es:
3 textbox + 3 oggetti (3 istanze della classe)
Se invece decidi di creare uno usercontrol, ti conviene ragionare in modo
diverso.
Sostituire pari pari i textbox standard di vb, con il tuo controllo, nella
stessa situazione ti ritroveresti con
3 usercontrol(che contengono 1 textbox ogni usercontrol) +......niente...
quindi recuperi anche in risorse, teoricamente parlando...o al limite siamo
sulo stesso livello. Imho.
Per non parlare del fatto che da gestire č di gran lunga piů semplice. Imho.
Spero di aver capito a cosa ti riferivi.

 imparato come si usano, devo usarle per forza ;D
Giusto... una volta che le conosci non puoi più farne a meno ;-)
Ciao.
-- 
BSD is for UNIX lovers -- linux is for Windows haters.

Per non parlare del fatto che da gestire č di gran lunga piů semplice. Imho.
piu' semplice non lo so: piu' veloce forse si'. di fatto, ora nella
form_initialize faccio un po' di set xx = new clstesto e nella
form_terminate faccio un po' di set xx = nothing. ok, perdo un po' di
tempo ma una cosa ragionevole.


Giusto... una volta che le conosci non puoi più farne a meno ;-)
non so se uso la mia clstesto per scelta o per sfinimento ;)
comunque devo rivederla un pochino nelle prossime settimane, cosi'
passo a terminare anche la clscombo e la clslista :)
saluti che ieri ho provato la z4 e mi sono innamorato...


 oggetti in vb =)
A livello di risorse? forse niente, però può essere che vb gestisca meglio
uno usercontrol piuttosto che una classe alla quale passi un riferimento ad
un oggetto di tipo textbox(bisognerebbe fare delle prove).
Il vantaggio sostanzioso sta nel fatto che rispetto al sistema della classe
ti risparmi di scrivere tanto codice, tanto per iniziare la dim e tutte le
set, non devi distruggere niente quando esci, hai la possibilità di gestire
le proprietà più "statiche" a priori settandole a design-time. a me sembrano
tante piccole comodità che messe insieme non fanno proprio scihfo. :-)

 saluti che ieri ho provato la z4 e mi sono innamorato...
Sarebbe stato diffficile il contrario...
