 Posts:59
 |
| 30 gen 2010 17.41 |
|
Scusatemi Gente mi Fate un piacere 
mi potete dare una mano a farmi rimpicciolire questo codice???
If TextBox3.Text = 5 Then OvalShape5.FillColor = Color.Cyan Else OvalShape5.FillColor = Color.White
If TextBox4.Text = 5 Then OvalShape5.FillColor = Color.Cyan Else OvalShape4.FillColor = Color.White If TextBox5.Text = 5 Then OvalShape5.FillColor = Color.Cyan Else OvalShape5.FillColor = Color.White
If TextBox6.Text = 5 Then OvalShape5.FillColor = Color.Cyan Else OvalShape5.FillColor = Color.White If TextBox7.Text = 5 Then OvalShape5.FillColor = Color.Cyan Else OvalShape5.FillColor = Color.White End If End If End If End If End If
If TextBox3.Text = 6 Then OvalShape6.FillColor = Color.Cyan Else OvalShape6.FillColor = Color.White
If TextBox4.Text = 6 Then OvalShape6.FillColor = Color.Cyan Else OvalShape6.FillColor = Color.White
If TextBox5.Text = 6 Then OvalShape6.FillColor = Color.Cyan Else OvalShape6.FillColor = Color.White
If TextBox6.Text = 6 Then OvalShape6.FillColor = Color.Cyan Else OvalShape6.FillColor = Color.White
If TextBox7.Text = 6 Then OvalShape6.FillColor = Color.Cyan Else OvalShape6.FillColor = Color.White
If TextBox8.Text = 6 Then OvalShape6.FillColor = Color.Cyan Else OvalShape6.FillColor = Color.White End If End If End If End If End If End If End Sub e cosi per altre 7 textbox 
finisco con 40 end if  |
|
|
|
|
 Posts:662
 |
| 30 gen 2010 18.13 |
|
Puoi spiegare cortesemente l'effetto che intendi ottenere e quali sono le condizioni? Secondo me dovresti legare l'evento textchange delle textbox alla modifica dell'ovalshape, ma evidentemente l'effetto che vuoi ottenere possiamo averlo utilizzando tecniche diverse, come ad esempio crearsi un controllo personalizzato che eredita da textbox e che espone una proprietà di tipo OvalShape che "lega" un oval shape presente sul form oppure, in alternativa usare degli option button... spiega per bene cosa vuoi ottenere e vediamo di trovare la soluzione migliore. In attesa di un tuo chiarimento.... Alberto. |
|
|
|
|
 Posts:59
 |
| 30 gen 2010 18.55 |
|
Scusami Alberto... allora partiamo dall'inizio avrai gia capito che uso vb2008 express...ok! ho una form dove c'è 10 textbox... 20 ovalshape e un button... con l'evento click del button genero10 numeri univoci.... queste 10 textbox si popolano di 10 N°.... ok "vorrei" che oval shape Es:6 veda se in una delle 10textbox c'e il N°6 se c'è si colora di cyan!! io con if then riesco a farle colorare o tornare white... ma è una tortura scrivere tutti quei end if e resto... se cosi non Ti fosse ancora chiaro, Ti incollo tutto l'evento click_Button... Grazie |
|
|
|
|
 Posts:10
 |
| 30 gen 2010 18.59 |
|
Ciao.
Mi sembra che moooolto recentemente, su un'altro Forum, ti ho già spiegato come fare ad usare il costrutto ForEach...Next per iterare la collections Controls del Form. No?!?!?!
Ciao |
|
|
|
|
 Posts:59
 |
| 30 gen 2010 19.18 |
|
si me lo ha spiegato anche Cristian e visto che l'ho messo anche in pratica ma....... ora ti incollo l'ultimo mio interveto sul threads gia chiuso xche convinta che fosse la volta buona...... e cosi provo a infangare anche il mio Amico.... siamo due a essere incapaci e ci diamo una mano uno con l'altro... giusto xche quando non capiamo una cosa o uno o l'altro chiediamo altrove x non essere troppo pressanti :-(( Ciao Cristian mi vergogno non sai quanto a romperTi l'Anima.... chiedo a Te anche xche se ri spiego il tutto a qualcun'altro dall'inizo, mi uccide... ho provato in tutti i modi a fare c'ho che mi hai detto ma non c'è stato verso.... partendo dall fatto che le textbox sono fuori dal groupbox.. x via che oramai ho lasciato come mi avevi poostato Tu... ho visto che funzionava e avevo paura di sbagliare... cmnq il suggerimento di Jeremy l'ho tenuto come del resto tutte le altre soluzioni che mi date. le salvo cosi ché mi serviranno x un futuro.... Dim nomeShape As String = "" <--- qui io presumevo che dove c'è nomeShape sia: ov1 For Each ovl As OvalShape In Me.groupBox1.Controls <--- qui è dove riscontro l'errore.. cioè dopo AS: ovalshape mi dice 'tip ovalshape non definito' ho messo anche ov1 e ovl ma niente sempre lo stesso errore.... nomeShape = ovl.Name.Replace("ov", "").Trim() <--- qui nomeshape ho messo ov1... e altre prove ma nulla sopra l'errore non sparisce... If numEstratti.Contains(CInt(nomeShape)) Then <-- qui invariato xche numestratti si ri fa al codice messo x l'estrazione dei numeri univoci.. e nomeshape: ov1 ovl.fillColor = Color.Blue <--- qui ho provato a mettere anche ov1 come si chiama la ovalshape.. e uguale lasciando ovl.... Else ovl.fillColor = Color.White <---- e qui End If Next il tutto è dentro l'evento Click dell'estrazione.. presumo sia giusto.. xche una volta cliccato sul Button per generare numeri la ov1 deve vedere se in una textbox qualunque ci sia il numero 1... e se risulta esserci lei si colora.. oppure rimane white.... P.S. lo so che appena leggerai Alexia ti verra la pelle 'oca... farai un espressione del genere .... ma sono veramente alle prime armi e purtroppo non riesco a tirarmici fuori.... non me ne volete... Grazie Mille
|
|
|
|
|
 Posts:10
 |
| 30 gen 2010 19.43 |
|
La soluzione che ti do io, rimane sempre e comunque ai fini "didattici" .... perchè basterebbe anche soltanto cambiare il nome delle OvalShape e delle textbox per mandare tutto in malora.
Prendi i suggerimenti che ti vengono dati, come spunto di ricerca e di approfondiemento, altrimenti ti troverai sempre in queste situazioni "difficili".
[code]
dim TxtTextBox as string
ForEach cnt as control in me.controls
if typeof cnt is textbox then
TxtTextbox=directcast(cnt,textbox).text
for each ovs as shape in TuoContainerShape.Shapes
if ovs.name="Ovalshape" & TxtTextBox then
directcast(ovs,Ovalshape).fillColor=Color.Blue
end if
next
end if
next
[/code]
Facci sapere...
Ciao |
|
|
|
|
 Posts:59
 |
| 30 gen 2010 19.50 |
|
in Effetti io non ho cambiato tutti nomi alle oval e ho provato solo con una proprio per non dover cambiare tutto..:-( mi sono solo limitata a lasciare dentro il groupbox un solo oval e cambiare solo un nome per prova se poi riusciva avrei cambiato tutto il resto..... Cmnq Grazie di nuovo Infinite... ora provo e Ti, o Vi farò sapere... Mille Grazie di nuovo ;-) |
|
|
|
|
 Posts:662
 |
|
 Posts:59
 |
| 31 gen 2010 16.43 |
|
Grazie Alberto :-) ma non so piu come definire il mio grado di conoscenza in vb2008 2005 vb6.... è inutile che sto qui a chiederVi delle cose che voi mi rispondete in un gergo che proprio non apprendo.... passo ancor di piu da defficente di quella che sono.... oggi mi sono recata da feltrinelli in geova per comprare ache quel benedeto libro Spiegato a mia nonna " se fossi un uomo potrei dire che se mi cadesse l'U.. mi rimbalzerebbe in C....." non ce l'hanno... apposto sono.... hanno dei libri uguali a quelli che ho preso in passato e cioè vb2008 etc etc... ma con quelli appena le apro mi vengono l'emicranee.... è inutile leggere quei libri... se sapessi cosa leggo non mi servirebbe prenderli...... il Consiglio di Jeremy mi continua a dare sempre lo stesso errore come e uguale a quello diCristian Punto
for each ovs as shape in TuoContainerShape.Shapes <---- questo trasformato in groupbox1 o anche in groupbox ma nulla: shapes non è un membro di system.windows.form.groupbox oppure cambiando in altre maniere stessa cosa ma dice groupbox1 non dichiarato.... io Vi allego un parte di quello che ho fatto io contando che le oval sono 20 e le text 10... ma il risultato rimane sempre quello...... se volete lo vedete da li di quello che vorrei " " altrimenti è uguale... è inutile che sto a dire bagianate e cose che manco so il valore o significato... Grazie..................
Alexia.... |
Attachment: Esempio.zip
|
|
|
|
 Posts:10
 |
| 31 gen 2010 17.00 |
|
Ciao.
Certo che con questo spirito sarà difficile che ci capirai qualcosa ..... sei troppo scoraggiata.
Ad ogni modo ho provato a sistemare il progettino che hai allegato .... non ho i controlli OvalShape quindi non ho potuto provare ... ma dovrebbe essere ciò che vuoi.
Facci sapere.... Ciao
|
Attachment: 001_Esempio.zip
|
|
|
|
 Posts:59
 |
| 01 feb 2010 11.27 |
|
Ciao Jeremy... Ciao Alberto.... e un Saluto a Tutti.... si sono veramente scoraggiata..... è veramente Difficile il Tutto.. Cmnq io stamane ho tirato giu il Tuo Esempio... e ora Ti "vorrei" chiedere 2 cose..... 1) quando nelle text esce il N°2 le Oval non si coloronano.. con tutti gli altri N° si ma il 2 non gli piace :-)) 2)Private Sub SelectOvalShape(ByVal seneder As Object, ByVal e As EventArgs)<-- seneder?? Dim ovs As ovalshape = CType(sender, Ovalshape)<--- sender: Nome non Dichiarato io ho provato a cambiare seneder in sender ok errore svanito.. ma non funziona piu si colora solo la oval1 e rimane sempre e solo lei azzurra e non varia ppiu nulla... e se ripristino non mi funziona più... e quì Dim ovs As ovalshape = CType(sender, Ovalshape<--- Ovalshape diventa OvalShape con le S Maiuscole... e non c'è più verso di recuperare...)) mi conviene cambiare ste oval dannate :-) che mi stanno gia sull'anima... Scusatemi tanto x ieri ma ero veramente Avvilita..... Mille Grazie.... Alexia |
|
|
|
|
 Posts:10
 |
| 01 feb 2010 18.02 |
|
Ciao. Dammi il tempo di cercare ste benedette librerie contenenti gli OvalShape e poi ti faccio un progettino funzionante(testandolo) Ciao.
|
|
|
|
|
 Posts:186
 |
| 01 feb 2010 18.57 |
|
Il controllo OvalShape è incluso nel PowerPack che a sua volta è incluso nel Service Pack 1 di Visual Studio 2008 (http://blogs.msdn.com/vsdata/archive/2009/07/24/visual-basic-power-packs-is-included-in-visual-studio-2008-sp1.aspx). Mario |
|
|
|
|
 Posts:10
 |
| 01 feb 2010 20.17 |
|
Grazie per l'indicazione .... Tempo residuo stimato per il download 1h.28m circa ....  Se ne parla domani ...  |
|
|
|
|
 Posts:435
 |
| 01 feb 2010 21.44 |
|
Ciao Alexia, Posso parlati sincermente, da genovese a genovese ? Casco perfettamente la tua frustrazione, non so come sei approdata a .net e se conosci qualche altro linguaggio di programmazione. A mio avviso il tuo problema non sta negli oval shape, ma nelle lacune che hai sulla programmazione ad oggetti (OOP). Ti suggerirei di iniziare a leggerti (gratis, ovviamente) un po di articoli di persone che sono qui sul forum per essere spremuti a nostro piacimento. Comincerei con 2 articoli di Alberto: Inziare da zero con visual studioMiniguida alle OOPE poi questa serie, scritta da Sabrina, che purtroppo si e interrotta... Guarda Senza mani !Sono sicuro che se poi spulci i blogs e gli articoli del forum trovi qualche cosa che ti dia una buona base. HTH Max. |
|
|
|
|
 Posts:662
 |
| 02 feb 2010 00.39 |
|
Rettifico che Iniziare da zero con Visual Studio è un articolo di Sabrina e non mio. Alberto. |
|
|
|
|
 Posts:13
 |
| 02 feb 2010 09.14 |
|
Buon Giorno a Tutti..... Grazie a Tutti x l'interessamento.... mi sono fatta il mio account così non impesto Aldino ;-)) Scusatemi anche se Vi faccio dannare :-(( Jeremy leggo solo ora l'impegno che Ti stai Accollando:-(( non voglio essere cosi massacrante :-(( Scusami... ne sono più che coscente e me ne sono resa anche conto della difficolta della cosa... non è semplice come il VBA.... per imparare ho pensato che iniziando con delle cosine sarei riuscita Moltooooo Piano a capire anche poco..... io quello che sto chiedendo " " era solo un modo semplice per evitare tutti quei if then end if end if end if end if...... ma non è cosi semplice " X ME " quel dannato for Each.... mi son imbattuta in un pò di libri ma tutti molto incomprensibili.... ora vado a leggere nei tuoi consigli..... gratis!!!! :-)) anche se è da pagare ma si arriva al dunque x me sarebbe una gioia :-)) libri che pago dai 40 50 € e le uso per catturare la polvere..(( Grazie a Tutti... |
|
|
|
|
 Posts:186
 |
| 02 feb 2010 10.02 |
|
> )) libri che pago dai 40 50 € e le uso per catturare la polvere..(( Scusate il commento OT ma questa affermazione mi ha fatto un po' ridere un po' pensare. Dunque è così che finiscono i miei libri? A catturare la polvere... Potrebbe essere un'opportunità commerciale. ;-P Chiudo l'OT. Per quanto riguarda For Each, cos'è che non capisci? E' semplicemente un ciclo per lavorare su un elemento alla volta, tra tutti gli elementi di un insieme. "For Each" infatti vuol dire "Per Ogni"... Quindi, "per ogni" elemento di tale insieme fai così e così... Mario |
|
|
|
|
 Posts:19
 |
| 02 feb 2010 10.56 |
|
Allego un progettino funzionante. All'inizio del file MainForm.vb c'è un lungo commento con consigli e spiegazioni. Carmelo |
|
|
|
|
 Posts:10
 |
| 02 feb 2010 11.14 |
|
Ciao.
Ho visto l'esempio di Carmelo ... mi permetto di dire che è molto poco .Net (senza offese) e molto stile Vb6 ....come dico sempre, non è necessario creare collezioni di controlli quando esiste già una collezione Controls nel quale sono presenti tutti i riferimenti ai controlli presenti sul Form. Mentre nel mio esempio l'errore di svista è su questa riga
[code]
OvalShape1.FillColor = Color.Cyan
[/code]
che ovviamente diventa
[code]
ovs.FillColor = Color.Cyan
[/code]
dove invece c'è scritto "seneder", ovviamente, diventa "sender"
Ciao
|
|
|
|
|
 Posts:11
 |
| 02 feb 2010 15.54 |
|
Ciao a tutti,
mi permetto di permettermi di dire (senza offesa) che non si tratta di programmazione vb6 VS programmazione .Net, in quanto non è il linguaggio che fa i "design patterns".
Mi sembra come quei sistemisti a cui chiedi un parere su un problema di wondows server e ti rispondono usa linux.
Le soluzioni proposte ai quesiti devono essere anche adatte a chi le fruisce.
Usare una lista di controlli o interrogare Controls() non è lo spartiacque tra chi sa usare del codice managed e chi invece programma secondo tecniche "arcaiche". |
|
|
|
|
 Posts:435
 |
| 02 feb 2010 17.10 |
|
Inserito da Alberto (DNW TEAM) su 02 feb 2010 01.39
Rettifico che Iniziare da zero con Visual Studio è un articolo di Sabrina e non mio. Alberto.
vabbe, pero' non ti arabbiare eh ? ;-) |
|
|
|
|
 Posts:10
 |
| 02 feb 2010 18.55 |
|
Inserito da darthfabio su 02 feb 2010 16.54 Ciao a tutti, mi permetto di permettermi di dire (senza offesa) che non si tratta di programmazione vb6 VS programmazione .Net, in quanto non è il linguaggio che fa i "design patterns". Mi sembra come quei sistemisti a cui chiedi un parere su un problema di wondows server e ti rispondono usa linux. Le soluzioni proposte ai quesiti devono essere anche adatte a chi le fruisce. Usare una lista di controlli o interrogare Controls() non è lo spartiacque tra chi sa usare del codice managed e chi invece programma secondo tecniche "arcaiche".
L'uso o meno della collezione Controls del Form .... non è lo "spertiacque" tra Vb6 e Vb.net ma lo è tra programmazione orientata agli oggetti e non ..... in quanto la necessità di creare una collezione per ogni tipo di oggetto, mostra una mancanza di applicazione del concetto di ereditarietà degli oggetti. Penso che su questo si possa essere un pò tutti daccordo. Ciao
|
|
|
|
|
 Posts:13
 |
| 03 feb 2010 15.13 |
|
Un Ciao a Tutti.....)) Mamma Mia Quante liti :-) sapessi il decimo di quello che Vi siete detti sarei già apposto .. ora vorrei fare 2 o 3 precisazioni con Mario... Caro Mario a te ti scappa da ridere a me invece mi tengono pulita la casa :-) scherzi a parte ioho comprato vb 2008 vb6 e un altro sul web che si spacciava di essere capito al volo ho provato a leggerlo buttandomi giù dalla finestra... ma che vadano al diavolo :-) stessi mal di pancia.... Ho provato sia io che Aldo a cercare il Tuo libro ma nulla tutti finiti... CAVOLI QUANTA GENTE SI TROVA NELLA STESSA CONDIZIONE DI NOI 2 cmnq Grazie Di Tutto... Carmelo :-) caro mio Carmelo io ho tirato giù il Tuo allegato ma non si apre... web develop... io ce l’ho ma è scaduto e non mi registro intanto non mi serve a nulla... se però tutte quelle spiegazioni me le puoi mettere in un .txt te ne sarei Grata....... Jeremy :-) Grazie ho fatto quella correzione tutto ok ma ora le oval si selezionano e non tornano più white rimangono cyan fino alla saturazione..... alla fine ho risolto che con l’evento click il solito (solo quello so fare:-) if ovs1.fillcolor = color.cyan ovs1.fillcolor = color.cyan end if............... e cosi x tutte le altre ovs 2 3 4 5- - - 20 Scusate il poema Gente..... Siete Grandi.....)) Ciao a Alberto cia Max..... si Siamo di Genova...... G R A Z I E M I L L E
|
|
|
|
|
 Posts:186
 |
| 03 feb 2010 15.24 |
|
> Mamma Mia Quante liti :-) Liti? Quali liti? > ora vorrei fare 2 o 3 precisazioni con Mario... > Caro Mario a te ti scappa da ridere a me invece mi tengono pulita la casa :-) ROTFL! :-) > scherzi a parte ioho comprato vb 2008 vb6 e un altro sul web che si spacciava di > essere capito al volo ho provato a leggerlo buttandomi giù dalla finestra... ma > che vadano al diavolo :-) stessi mal di pancia.... > Ho provato sia io che Aldo a cercare il Tuo libro ma nulla tutti finiti... Sono finiti nelle librerie, ma se ordini via web ce ne sono ancora... Se ti interessa, vai sul sito della casa editrice (www.fag.it). > CAVOLI QUANTA GENTE SI TROVA NELLA STESSA CONDIZIONE DI NOI 2 Sicuramente si. Nessuno "nasce imparato" :-) > Carmelo :-) caro mio Carmelo io ho tirato giù il Tuo allegato ma non si apre... > web develop... io ce l’ho ma è scaduto e non mi registro intanto non mi serve a nulla... Scaduto? Cosa vuol dire che è scaduto? La versione Express è gratuita, la scarichi e la usi senza problemi di scadenza. Puoi creare anche applicazioni commerciali, la licenza lo consente. Ciao Mario |
|
|
|
|
 Posts:13
 |
| 03 feb 2010 15.58 |
|
Sorry doveva essere per la Pag1 e mi si è infilato qui :-(( si ho la express... e devo registrarmi per poterlo usare.... ora scusa ma ri metto la parte esclusa dove dico a Te anche xche mi hai gia risposto con l'andar sul sito....)) |
|
|
|
|
 Posts:13
 |
| 03 feb 2010 16.00 |
|
Un Ciao a Tutti.....)) Mamma Mia Quante liti :-) sapessi il decimo di quello che Vi siete detti sarei già apposto .. Carmelo :-) caro Carmelo io ho tirato giù il Tuo allegato ma non si apre... web develop... io ce l’ho ma è scaduto e non mi registro per aver il codice di attivazione.. intanto non mi serve a nulla... se però tutte quelle spiegazioni me le puoi mettere in un .txt te ne sarei Grata....... Jeremy :-) Grazie ho fatto quella correzione tutto ok ma ora le oval si selezionano e non tornano più white rimangono cyan fino alla saturazione..... alla fine ho risolto che con l’evento click il solito (solo quello so fare:-) if ovs1.fillcolor = color.cyan ovs1.fillcolor = color.cyan end if............... e cosi x tutte le altre ovs 2 3 4 5- - - 20 Scusate il poema Gente..... Siete Grandi.....)) Ciao a Alberto cia Max..... si Siamo di Genova...... G R A Z I E M I L L E
|
|
|
|
|
 Posts:13
 |
| 03 feb 2010 16.02 |
|
scusate ma continua mandarmi su questa pagina 2.... ma che sta succedendo ;-(( |
|
|
|
|
 Posts:13
 |
| 03 feb 2010 16.07 |
|
Carmelo :-) caro mio Carmelo io ho tirato giù il Tuo allegato ma non si apre web develop... io ce l’ho ma è scaduto e non mi registro per ricevere i codici... intanto non mi serve a nulla... se però tutte quelle spiegazioni me le puoi mettere in un txt te ne sarei Grata....... Jeremy :- Grazie ho fatto quella correzione tutto ok ma ora le oval si selezionano e non tornano più white rimangono cyan fino alla saturazione..... alla fine ho risolto che con l’evento click il solito (solo quello so fare ) if ovs1.fillcolor = color.cyan ovs1.fillcolor = color.cyan end if............... e cosi x tutte le altre ovs 2 3 4 5- - - 20 Scusate il poema Gente..... Siete Grandi.....)) G R A Z I E M I L L E
|
|
|
|
|
 Posts:13
 |
| 03 feb 2010 16.09 |
|
e no cavoli.... scusate ma perché manco me la C...o questa pagina e quando scrivo in risposta immediata va a mettere tutto in Pag2??? giuro non faccio niente di strano e di dierso che e come ho fatto gli altri giorni... boh vabbè rinuncio anche a questo...... Scusatemi..... |
|
|
|
|
 Posts:11
 |
| 03 feb 2010 16.48 |
|
Perdona la mia ignoranza ma mi sfugge il nesso tra uso di una collection e il concetto di ereditarietà... |
|
|
|
|
 Posts:10
 |
| 03 feb 2010 17.26 |
|
Infatti .... non c'è nessun nesso tra UNA collection ed il concetto di ereditarietà.
Mi riferivo ALLA Collection Controls in particolare, in quanto, in essa, sono presenti i riferimenti a tutti i controlli del Form che ereditano tutti dalla classe base Control e pertanto iterabile senza bisogno di creare più Collection di oggetti dello stesso tipo.
@Alexia .... per far tornare gli OvalShape bianchi è sufficiente colorarli tutti di bianco(Usando un ForEach .... dovresti sapere come si fa, adesso) prima di eseguire la procedura che verifica l'estrazione. Se hai problemi .... facci sapere.... Ciao
|
|
|
|
|
 Posts:19
 |
| 03 feb 2010 17.29 |
|
Per Alexia: prova così: crea un nuovo progetto Windows Form, aggiungi il riferimento alla libreria PowerPacks dove ci sono gli OvalShapes e salva il tutto. Nella cartella della tua applicazione, dove ci sono i files Form1.vb, Form1.Designer.vb, il file di progetto eccetera, copia i tre files che ti allego. Fai click destro sul nome del progetto in Solution Explorer, ovvero click sull'elemento di menu Progetto=>Aggiungi elemento esistente... Nella finestra che si apre seleziona il file MainForm.vb che hai copiato. Elimina Form1 (basta selezionarlo in Solution Explorer e premere Canc). Doppio click su My Project, oppure menu Progetto=>Proprietà di... Nella finestra delle proprietà del progetto, in Form di avvio seleziona MainForm. Ed ora prova. Fammi sapere. Per tutti gli altri: Non mi sono affatto offeso, e non sono intervenuto nell'aspro  dibattito sulla progettazione del mio programmino, ma lo farò perché effettivamente c'è qualcosa che non capisco. Un saluto a tutti quanti Carmelo |
Attachment: MainForm.zip
|
|
|
|
 Posts:10
 |
| 03 feb 2010 17.37 |
|
ereditano tutti dalla classe base Control
derivano tutti dalla classe base Control |
|
|
|
|
 Posts:19
 |
| 03 feb 2010 18.47 |
|
Rieccomi fra voi.
Mi sono iscritto da poco al Forum, e l'ho fatto, ovviamente, per due motivi: imparare da chi è più bravo ed ha più esperienza di me, ed eventualmente aiutare chi è in difficoltà cercando di spiegare quello che so, così come io l'ho capito.
Di conseguenza, come vi ho già detto, non mi sono affatto offeso perché Jeremy ha scritto "stile Vb6", e non avevo intenzione di intervenire nella discussione. Ma siccome voglio capire ed imparare, scrivo perché effetivamente anch'io, come Fabio, non capisco che cosa c'entri il corretto uso dell'ereditarietà con l'uso di un array. E non l'ho capito nemmeno dopo la risposta di Jeremy.
In effetti il mio stile di programmazione in Basic risale a molto prima di Vb6 (Vb5, Vb4 ... VbDOS, QuickBasic... indietro fino al GWBasic ed al vecchio compilatore Bascom; non c'era IDE, si scriveva con un normale editor di testo ed il debug si faceva tentando la compilazione dopo aver costellato il codice di istruzioni Print per vedere a schermo i valori delle variabili che interessavano).
E prima ancora usavo linguaggi ancora più arcaici.
Mi sono rimaste da allora alcune abitudini, in particolare l'attenzione alle richieste da soddisfare, alle prestazioni, all'uso delle risorse ed alla manutenibilità del codice. Non sono un professionista, ma ho scritto programmini per antiquati computers con pochi kb di memoria (la Ram era poca e costosa) e qualche milione di volte più lenti dei PC di oggi. L'evoluzione dall'hardware permette oggi di non accorgersi del fatto che una progettazione "rapida" fa scrivere programmi più lenti e talvolta più voluminosi, ma continuo a credere che la diffusione del "fatware" (come un programmatore spiritoso ha scritto una quindicina di anni fa) sia un male. E' vero che per il problema do Alessia tante attenzioni sono forse sprecate, ma ormai fanno parte del mio bagaglio, e mi viene sempre spontaneo fare così. E poi, se lo scopo è didattico...
Nel commentone che ho scritto all'inizio del programmino ho cercato di spiegare ad Alessia come l'avevo progettato. Avevo anche scritto che si poteva appunto fare come era stato già suggerito, ciclando nell'insieme Controls del Form e selezionando i TextBoxes per leggerne il contenuto, visto che gli unici TextBoxes presenti erano appunto quelli da leggere. Poi, ad abundantiam, le ho scritto che, più in generale (se ci sono altri TextBoxes, per cui occorre anche selezionare fra di essi usandone il nome, il Tag o altro, oppure se i controlli nel Form sono molti e non è conveniente per le prestazioni fare ad ogni pressione del pulsante un ciclo su tutti) conveniva "fare la selezione" una volta per tutte, creando all'inizializzazione del programma un semplice array (sono pochi bytes di puntatori, poca Ram in cambio di prestazioni migliori).
Le richieste da soddisfare, le perfide specifiche. In questo caso non erano certamente ben definite, ma ho pensato che ad ogni pressione del pulsante occorresse ripetere l'operazione, e che quindi occorresse "resettare" a bianco il colore degli OvalShapes non elencati nei TextBoxes. Volevo però evitare di farlo a video e per tutti gli Shapes: per noi sono solo 20 istruzioni di assegnazione del tipo ov.FillColor = Color.White, ma il computer deve assegnare i quattro bytes che rappresentano il colore a tutti i pixels di ciascuno Shape, e sono tanti pixels. Tempo sprecato, come ho scritto nel commento nel nuovo file che ho allegato al mio secondo post (prima di rispondermi leggetelo, per favore).
Tempo sprecato anche fare un ciclo per tutti i controlli, selezionare i TextBoxes e per ciascuno di essi fare un ciclo annidato per tutti gli OvalShapes (20 cicli per ognuno dei 10 TextBox fa 200 cicli ogni volta).
La mia soluzione con gli arrays di TextBoxes, di OvalShapes e di colori permette invece: - di "resettare" i colori solo in memoria con un ciclo di 20 assegnazioni di una sola variabile intera (l'intero di macchina per processori a 32 bits, una sola istruzione macchina): For I = 1 To 20 osColors(I) = Color.White Next
- di leggere i valori dei TextBoxes con un semplice ciclo, per poi memorizzare i colori da impostare con solo 20 assegnazioni (10 per la lettura, 10 per l'assegnazione): For I As Integer = 1 To 10 Dim value As Integer = Integer.Parse(tbs(I).Text) Me.osColors(value) = Color.Cyan Next
- di cambiare i colori solo agli OvalShapes per cui occorre: For I = 1 To 20 If Me.os(I).FillColor Me.osColors(I) Then Me.os(I).FillColor = Me.osColors(I) End If Next
Detto questo, non capisco ancora che cosa c'entri l'ereditarietà con l'uso dell'insieme Controls. E se c'entrasse mi preoccuperei molto: sono più di 20 anni che studio (per hobby) l'OOP, ho cominciato a smanettarci su con il vecchio Turbo C++ 1.0 della Borland, e ancora non l'ho capita? Aiutatemi, vi prego.
Carmelo |
|
|
|
|
 Posts:19
 |
| 03 feb 2010 20.58 |
|
P.S. Nel "commentone" ho scritto cose che credo sensate, ma ho usato un linguaggio "friendly" ed assolutamente scorretto. P. es. ho scritto "estrarre un oggetto da un insieme" anziché "accedere ad un oggetto di un insieme". L'ho fatto apposta, sia chiaro. Carmelo |
|
|
|
|
 Posts:11
 |
| 03 feb 2010 22.48 |
|
Chiarisco il concetto che ero ironico!!! sul non capire il nesso. Usare una classa che eredita da una classe base,astratta o fate voi non vuol dire fare programmazione OOP e nemmeno c'entra nulla con la ereditarietà.
Chiudo la polemica sterile...evidentemente mi sono spiegato male.
Fabio.
|
|
|
|
|
 Posts:13
 |
| 07 feb 2010 01.43 |
|
Scusate l'Assenza Ragazzi :-) ma ho raccolto le VS info e ci smanetto sopra :-)) spero che con tutti questi codici ed Esempi possa riuscire nell'intento :-)) Siete Davvero Grandi e Gentilissimi.... Jeremy Carmelo & Compani che Vi siete premurati e anche un pò rotti dietro ste Oval :-)) sembra come quei giochi dei bambini "gli incastri" io ho la testa quadrata e Voi provavate a mettere la forma rotonda :-)) Grazie di nuovo a Tutti :-)) |
|
|
|
|