Newsgroup: it.comp.lang.visual-basic
Titolo: proprietà in sola lettura ARGH!

ho un controllo che contiene un textbox.
Non riesco ad esporre la proprietà MultiLine del textbox
Perchè?
Vi spiego meglio il problema.
Come tutti sapranno la proprietà multiline del textbox è modificabile in
DesignTime ma non in runtime da codice.
Questo per me non sarebbe un problema in quanto andrebbe benissimo tale
condizione, cioè che il textbox dentro al mio controllo possa diventare
multiline o meno settando una proprietà in fase di progettazione.
Dico non sarebbe un problema, invece lo è perchè la property let che ho
scritto per fare funzionare sta minchia di proprietà non viene compilata.
Public Property Let MultiLine(ByVal New_MultiLine As Boolean)
    Text1.MultiLine = New_MultiLine <<<<<<impossibile assegnare una
proprietà di sola lettura
    PropertyChanged "MultiLine"
End Propert
Il problema è che il textbox dentro al controllo è sempre in runtime, quindi
mi sa che sono fritto.
Qualcuno ha dovuto affrontare un problema simile?
AAAARGGHHH!
-- 
Le persone non sono il proprio comportamento: devi sempre andare oltre,
essere flessibile, capire il punto di vista degli altri, interpretarne i
comportamenti ed intuirne le esigenze.
Per rispondere in privato elimina
dall'indirizzo "togliquesto"
MasterDavidex
David Ruscelli

 Qualcuno ha dovuto affrontare un problema simile?
si.
francesco balena.
mi sembra di ricordare che quando tratta degli ocx home made, accenni
proprio a quel problema.
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo


Come l'ha risolto?


 Come l'ha risolto?
Io non lo so (nè ho mai costruito controlli), ma se non c'è qualche
truschino, perchè non prevedere, da progetto del controllo, 2 textbox, una
normale e l'altra multiline e, in funzione dell'assegnazione delle proprietà
al controllo, mostrare l'una o l'altra?

 Come l'ha risolto?
un'attimo che vado a leggere...
insomma, dice che è un casino. la cosa più semplice è inserire nel
costruendo controllo più textbox, ciascuna con una diversa combinazione
delle caratteristiche modificabili solo a design time, e attivare al bisogno
una text piuttosto di un'altra.
non so se mi sono capito, comunque sono tutti workaround, il problema in sè
non è risolvibile.


 in sè non è risolvibile.
Bingo, mi chiamo Balena! :-P

Non per sminuire Francesco Balena (che pure č un apprezzatissimo scrittore
di guide su vb) ma il nostro Lupo č arrivato alle stesse conclusioni... e
ben un minuto prima!!!  ;-)
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
www.nicolaottomano.it

> Bingo, mi chiamo Balena! :-P
Che animale č un Lupo Balena? :-P


 Bingo, mi chiamo Balena! :-P
ecco, allora, già che ci sei, elenca anche gli altri due metodi che
suggerisci nel libro, che io, per la ben nota pigrizia, non ho riportato.


 conclusioni... e ben un minuto prima!!!  ;-)
Già e mi sento gasatissimo. Se quello che ha riportato Sergio corrisponde
alla realtà (nel senso che nemmeno lui esattamente ricorda), io non ne avevo
proprio idea, nè memoria (onestamente, ho letto il libro, ma ho saltato
tutta la parte di auto-costruzione dei controlli). Sono semplicemente un
mago! Ciapalè! :-P

 riportato.
Sono onestissimo: non ho mai letto quella parte. Giuro. E' tutta farina
(crusca?) della mia testolina.

 al controllo, mostrare l'una o l'altra?
Ci avevo già pensato, ma speravo in qualcosa di più ordinato/semplice.


 Ci avevo già pensato, ma speravo in qualcosa di più ordinato/semplice.
Capisco, ma non fare troppo il sofistico... E poi, in questi giorni, più
distrazioni hai e meglio è. :-P

 suggerisci nel libro, che io, per la ben nota pigrizia, non ho riportato.
A me interessano, visto che al primo metodo già c'ero arrivato pur'io.


 A me interessano, visto che al primo metodo già c'ero arrivato pur'io.
Cazzo e stracazzo, mai che si possa godere di una soddisfazione...
Comprati il libro. Ciapalè! :-P

[Lupo = 
circa_LupoOrm...@libero.it
 in
c3cghj$26h2ea$
1...@ID-174464.news.uni-berlin.de
] ha scritto:

Mi lancio ancora (il libro l'ho a casa, quindi non sto copiando):
Lo prevedi multiline e ne gestisci l'input a una sola riga quando la
proprietà è "mono-line".

 distrazioni hai e meglio è. :-P
Sai che stò tenendo botta?
Oggi dopo pranzo ero un po' in crisi, però sono riuscito a resistere
cominciando a preparare la roba per andare a correre al parco stasera, così
almeno mi godo un po'  i primi benefici e la primavera :-) (anche se in 4
giorni non credo che ancora si noti granchè sui polmoni che ho smesso, anzi,
specie la mattina sono un po' dolorante perchè si stà sciogliendo il
catrame)
Ho notato anche oggi con piacere che il battito cardiaco e la pressione sono
rientrati nella norma.
Ho letto da qualche parte che pensare ai benefici aiuta molto,
effettivamente è vero.
Tornando IT devo dire che queste sono le cose che mi fanno incazzare di Vb.
Tutto semplice, poi di botto c'è l'incastro che ti frega.
Vaffanculo! Non a te, a mamma microsoft!


 proprietą č "mono-line".
Mi piace!
Appena ho finito quello che sto facendo ora provo a studiarci sopra.

>> Bingo, mi chiamo Balena!
Lupo va bene che sei bravo... va bene che ti paragoni a Balena... ma nei NG
non è bello fare Morphing!!! O sei Lupo o sei Balena.... :-P


 l'altra?
Perchè ad esempio si raddoppierebbe il consumo di risorse grafiche di
windows per ogni istanza del controllo (a meno di non utilizzare i controlli
windowless per altro non supportati ufficialemtne da m$oft)?
hth

 nei NG non è bello fare Morphing!!! O sei Lupo o sei Balena.... :-P
Grazie, lo prendo come un complimento. (e mi gaso)

 Grazie, lo prendo come un complimento. (e mi gaso)
Certamente è un complimento. :-)


 ha scritto nel messaggio
news:c3cits$25vh4v$1...@ID-174464.news.uni-berlin.de...

oddio, complimento.......hai mai visto che faccia ha Balena?
:-)))))))))))))) non ne sarei così sicuro, io, che sia un complimento bello
e buono!!!!
ovviamente sto scherzando, eh.......non si sa mai, che Balena ogni tanto
lurki il newsgroup e becca il mio post!!
;-)))
good coding!!!
-- 
Alletun
"Io lo so che accadrà. La voce sussurra nei miei pensieri di Jair, Rone,
Allanon e soprattutto nelle Mortombre.
Sussurra segreti che mi sono tenuti nascosti, nella grigia oppressione
di questo giorno e nell'oscurità caliginosa di quello che mi aspetta.
Saremo distrutti. Tutti."
Brin Ohmsford - La Canzone di Shannara - T. Brooks

 tanto lurki il newsgroup e becca il mio post!!
Già. Cosa hai da ridire sulla mia faccia ? Vediamo prima la tua, magari.
F.B.

 F.B.
ma almeno cambia l'indirizzo, dai...


 ma almeno cambia l'indirizzo, dai...
Naaaaaa. Il morphing è MALE, ed è deprecato dal serverone tedesco.
Sicuramente non se ne accorgono neanche, ma perché rischiare
l'account per una battuta ? :-)
Vabbè che c'era negli header, ma sai, pare che certi tedeschi manchino
del senso dell'umorismo. :-)
Un Paperino Italia-spaghetti-mandolino.

 Vaffanculo! Non a te, a mamma microsoft!
non è una limitazione di vb, ma di Windows: lo stile ES_MULTILINE lo puoi 
impostare solo in fase di creazione di una textbox (CreateWindowEx), non 
successivamente: puoi provare ad usare la SetWindowLong ma non ottieni alcun 
risultato.
Sempre a dar la colpa al povero VB... :-)
Ciao,
Moreno
Inviato da 
www.mynewsgate.net

 Sempre a dar la colpa al povero VB... :-)
No No!!!!
La colpa è di VB!!!
Se l'ereditarietà fosse supportata questo problema non ci sarebbe, quindi la
colpa è di VB!
Scusa un attimo...
Ma win cosa c'entra se Vb non supporta l'ereditarietà?

[Frank Ottobre = 
circa_ruscel...@intesacoop.com
 in
c3mp8l$28ljgi$
1...@ID-110499.news.uni-berlin.de
] ha scritto:

La colpa è del controllo, non di Win, nè di VB.
Fateci caso: in ogni (!) controllo fornito insieme a VB (gratuito) c'è
sempre una sciocchezza (tale appare la prima volta che la si scopre) che non
va o che non è implementata e che, prima o poi (io dico prima), si dimostra
utile/necessaria. L'han fatto apposta, proprio grazie alle stracazzo di
Let/Set/Get, che le possino!

 Let/Set/Get, che le possino!
Quello che dici è vero, ma in questo caso specifico se Vb avesse supportato
l'ereditarietà io avrei potuto usufruire in fase di progettazione della
proprietà in questione anche sul controllo figlio e non avrei avuto
problemi.
Il problema è nato dal fatto che Vb non supporta l'ereditarietà e gli
artifizi che si usano per trasportare le proprietà da un controllo padre al
figlio hanno questi problemi.


 padre al figlio hanno questi problemi.
No, no! Se la MultiLine fosse stata concepita sin dall'inizio come proprità
di lettura/scrittura tu non avresti avuto problemi. E' che il progettista,
per pigrizia o ... regola, ha deciso che non aveva voglia/poteva scrivere le
poche istruzioni di adeguamento. Quello che ora devi fare tu. ADO insegna.

 poche istruzioni di adeguamento. Quello che ora devi fare tu. ADO insegna.
E' vero, effettivamente è così.
In generale diciamo che sia questo motivo che l'ereditarietà avrebbero fatto
in modo che il mio problema non nascesse mai per cui sono in ogni caso
mancanze di Vb.

[Frank Ottobre = 
circa_ruscel...@intesacoop.com
 in
c3msma$29til7$
1...@ID-110499.news.uni-berlin.de
] ha scritto:

Non conosco il vero significato di "ereditarietà", quindi non insisto, ma a
me pare "trasportare proprietà (e forse metodi) da un oggetto padre a uno
figlio".
Ora, anche disponendo di una totale ereditarietà, perchè mai sarebbe
possibile aspettarsi che una proprità, pur prevista, di sola lettura diventi
nel figlio anche di scrittura? Mi sembrerebbe bello, ma nello stesso tempo
un tantino assurdo, inconcepibile...
Quindi, perchè un textbox che ha e lascia ereditare la proprietà MultiLine,
non lascia ereditare la proprietà "sedie"? Cos'è? Non m'interessa, è solo
per esasperare il concetto espresso sopra. Ben felice di essere smentito,
anche da un TextBox che si stacca dal video e mi prende a sediate. Ma
dubito... :-P

 un tantino assurdo, inconcepibile...
Quella proprietą č in sola lettura in runtime
In lettura/scrittura in design time
Se metto il mio textbox nel form e setto la proprietą multiline come credo
vado bene, ergo sono contento, riergo sono felice.
Se devo aggiungere dei metodi/proprietą al textbox devo crearmi un OCX che
lo contenga, e si susseguono degli eventi che mi rendono infelice, ergo
triste, riergo incazzato.
Ora cosa accade.
Se l'OCX ereditasse naturalmente tutte le proprietą e i metodi del textbox
io andrei bene, perchč mi ritroverei a disegnare il mio ocx nel form e avrei
la mia proprietą Multiline da settare nel pannello delle proprietą.
Se l'OCX non eredita le proprietą, (ed č quello che accade) tutte quelle
proprietą che in design time si scrivono ma in runtime sono in sola lettura
le perdi, perchč gli accrocchi che si usano per passare le proprietą non
hanno effetto, non vengono proprio compilati!
Perchč non hanno effetto?
Perchč l'accrocchio č inserito dentro l'ocx e l'ocx nel mentre che lo
disegni nel form (quindi sei in design time) in realtą all'interno di se
stesso sta eseguendo delle righe di codice e si trova in runtime e il
textbox contenuto al suo interno non ha la proprietą multiline scrivibile,
anche se in realtą tu sei in modalitą design time fuori e quindi dovresti
poterla scrivere, ma non accade e ti dici.
Ma porca puttana! Sarą possibile che se una proprietą č scrivibile in
design-time ma non in run-time la perdo?

 design-time ma non in run-time la perdo?
Sarą possibile o ... (insisto) voluto...? ;-)

...

scusa tu, ma che c'entra l'ereditareità in questo contesto? Anche se
avessi potuto estendere l'interfaccia del controllo aggiungendo la
proprietà in scrittura o se avessi ridefinito l'implementazione di
entrambe... come l'avresti implementata se il sistema operativo non di
da la possibilità di impostare uno stile specifico di una finestra se
non all'atto della creazione della finestra stessa???
Windows non te lo permette. Punto. In qualunque linguaggio.
Ciao,
Moreno

 scusa tu, ma che c'entra l'ereditareità in questo contesto?
credo che il ragionamento di frank sia di questo genere:
se faccio un ocx che ingloba il textbox, quando uso l'ocx il textbox è già,
di fatto, in run time, e quindi la possibilità di agire su alcune sue
proprietà mi è preclusa.
se invece io potessi ereditare da txtbox, questo controllo ereditato,
all'interno dell'ide sarebbe ancora in design time, e quindi avrei accesso a
tutte le sue proprietà.
poi non so se il ragionamento è corretto :-D


 tutte le sue proprietà.
Hai sintetizzato perfettamente...
io non sarei stato in grado di sintetizzare meglio...
Sei un mito :-)


 poi non so se il ragionamento č corretto :-D
ora ho capito, grazie.
Perņ ti invito a fare una prova: 
.NET (supporta l'ereditarietą): ho definito una classe che eredita
System.Windows.Forms.TextBox e reimplementato la proprietą Multiline
(poi si č rivelato assolutamente inutile perché ho visto che in .net
la proprietą multiline č in lettura/scrittura anche a runtime, vabbé).
aggiungi una textbox (o la tua textbox derivata) ed un command button
in un form, quindi:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        TextBox1.Text = "ciao" & vbCrLf & "ciccio"
    End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
        Static a As Boolean
        a = Not a
        TextBox1.Multiline = a
        Debug.WriteLine(TextBox1.Handle)
    End Sub
Vedrai che ogni volta che modifichi il valore della proprietą
Multiline l'handle della textbox cambia: questo perché, come ho detto
nel post precedente, la textbox viene ogni volta distrutta e ricreata.
Non c'č ereditarietą o genetica che tenga :-)
Ciao,
Moreno

     End Sub
non bastava
   TextBox1.Multiline = not TextBox1.Multiline
senza variabili ?

...

cerrrto, solo che ho copiato solo una parte di codice e la variabile
l'ho usata per altro (già che c'ro ho fatto qualche altra prova...)
:-))

 :-))
sprecone ! hai gia' una proprieta' bool che e' staticissima ! :)

 Multiline l'handle della textbox cambia
scusa, moreno, ma intendevo una cosa diversa.
qui, tu erediti, ma comunque cambi la proprietà al run time. noi stavamo
parlando di poter cambiare la proprietà in design time, e questo non è
possibile se in vb6 ti fai un usercontrol con dentro la textbox...


 possibile se in vb6 ti fai un usercontrol con dentro la textbox...
Se un giorno dovessi scegliere qualcuno che mi rappresentasse sceglierei uno
come te....
Io avevo rinunciato da un pezzo, per mia incapacità a spiegare bene le cose,
ma vedo che tu riesci ad essere molto chiaro e a farti capire.


 possibile se in vb6 ti fai un usercontrol con dentro la textbox...
aaaaaahhh, ok. non è che son più duro del titanio (un pochino meno,
dai :-)), è solo che non avevo prestato attenzione alla discussione
tra Lupo e Frank: ora rileggendo bene tutto il thread ho visto che il
suo obiettivo era di estendere le proprietà della textbox e non
modificare tale proprietà a runtime (che sia in esecuzione o nell'ide
per un controllo contenuto in un usercontrol).
Quindi concordo: eredidando la textbox ed estendendone l'interfaccia
si ovvia al problema di dover creare un ocx (che a me poi piacciono
poco in generale).
vabbé, alla fine ci siam capiti (e cmq non è colpa di vb :-PP)
Ciao,
Moreno

 vabbé, alla fine ci siam capiti (e cmq non è colpa di vb :-PP)
Come no?
E' Vb che non supporta l'ereditarietà! Mica la nonna Franca....!
