Ovalshape

lunedì 25 gennaio 2010 - 17.26

Alexia Profilo | Newbie

Ciao a Tutti....
Scusate c'è qualcuno che può spiegarmi come fare una cosa??
io ho una form dove ho inserito 15 ovalshape quando ci clicco sopra questi si colorano "azzurro"... ho una label dove "vorrei" che man mano che seleziono sti oval, mi scrive quanti oval sono selezionati....
dopo questa domanda avrete capito che non sono esperta... xcio se qualche Gentilissima Persona mi da una mano le sono grato....
Grazie Mille

Jeremy Profilo | Guru

Ad ogcchio e croce una cosa del genere:

dim NrOval as integer = 0 For Each myOval as OvalShape in me.controls If myOval.Selected = True then Nroval+=1 end if Next TuaLabel.text=NrOval.tostring

Facci sapere...
Ciao

Alexia Profilo | Newbie

Ciao Jeremy..... Grazie dell'interessamento....)) Molto Gentile...
ho fatto alla lettera quello che miHai scritto Tu e cioè:
dim NrOval as integer = 0
For Each myOval as OvalShape<------ ma qui mi sottolinea e mi dice: tipo 'Ovalshape' nonDefinito...

ora Ti spiego i miei "pasticci"
allora: ho creato un semplice database... in questa form ho 15 textbox.. quando cerco dentro il data invece che nomi o numeri, sulle textbox compaiono solo delle " X "
ma queste possono essere 6, 8, 10... e vorrei xcio che la label mi scrive quante sono selezionate in quel momento....

io ho fatto cosi if _1textbox.text = "X" then
Ovalshape1.backColor = color.cyan
end if
if _1textbox.text = '' " then
Ovalshape1.backColor = color.white
end if
end sub.....

2) il Codice che Mi hai scritto dove lo devo mettere??
sulla label?, form1load?, o Ovalshape1, Ovalshape2, Ovalshape3... etc tetc????
Grazie Mille per Tutta la Cortese attenzione ed interessamento.....

Jeremy Profilo | Guru

Ciao.
Il mio era solo un esempio(tra le altre cose sbagliato ... poi ti spiego perche) di come poter fare ad iterare la collezione di controlli presenti sul form per poterne valutare alcune proprietà.
Io ho presupposto che, OvalShape, fosse un tipo definito(che io non conosco) di un controllo di terze parti(credo), pertatnto, dovrai scoprire di che tipo sono i "bottoni" che hai sul form(magari alla fine sono semplicemente di tipo Button).
Il codice che ti ho dato io, è, in ogni caso, errato, in quanto, otterresti un eccezione del tipo InvalidCastException dato che i controlli presenti nel form potrebbero essere di tipo diverso.
Il codice corretto sarebbe questo:
dim NrOval as integer = 0 For Each myOval as Control in me.controls if TypeOf myOval is TipoDelControlloOvalShape then If directCast(myOval,TipoDelControlloOvalShape).Selected = True then Nroval+=1 end if end if Next TuaLabel.text=NrOval.tostring


Facci sapere...
Ciao

Alexia Profilo | Newbie

Ciao Scusatemi se non ho più scritto ma ho avuto da fare...((
cmnq nulla ho provato anche quello e non sono riuscita a farlo funzionare....
mi sono sentita con un mio amico e mi ha suggerito questo... che anche lui mi da una mano Tramite forum... e ha tirato giu questo....
private sub SelectOvalshape (ByRef os As Integer)
if os.FillColor = Color.white Then
os.FillColor.Cyan
Me.Textbox1.Text = (CType(Me.Textbox1.Text, Integer) + 1).ToStrng
Else
os.FillColor.White
Me.Textbox1.Text = (CType(Me.Textbox1.Text, Integer) - 1).ToStrng
End If
End Sub

private sub Ovalshape1_Click.... etc

Dim os As Object = OvalShape1
Call SelectOvalShape (os)
e questo x Tutte le OvalShape 1, 2, 3, 4, 5, etc etc....
Grazzissssssime lo Stesso Jeremy.....
ma invece per chiederTi una Gentilezza posso qui?? sarebbe sui if then... e per non fare venti IF THEN IF THEN
fare select case
case
case

sono Veramente inchiappata e mi servirebbe capire una volta per tutte questo select case.....


Di Nuovo Grazie a Tutti.....










Jeremy Profilo | Guru

Ciao.
Per il Select Case
Esempio:
Dim TuaVariabile as string Select Case TuaVariabile Case "Testo1","Testo2" codice da eseguire Case "Testo3" codice da eseguire Case Else codice da eseguire End Select
oppure:
Dim TuaVariabile as Integer Select Case TuaVariabile Case 0,1,2,3,4 codice da eseguire Case 5,6,7,8 codice da eseguire Case Else codice da eseguire End Select

Per quanto riguarda il codice che ti hanno gentilmente suggerito ..... ringrazia e digli che fa lo stesso.
Se ti trovi in ambiente .Net, l'approccio è sicuramente sbagliato, ma, sopratutto, c'è qualcosa che non quadra.
Innanzitutto il tipo Integer non ha un metodo ToStrng (ma potresti averlo trascitto male tu) ne tanto meno una proprietà FillColor, quindi, o c'è qualcosa che non ci hai detto .... o il codice che ti hanno suggerito non può funzionare.
Addirittura, impostando Option Strict On, non te lo farebbe nemmeno compilare.
Non riesci proprio a indicarci il tipo di questi benedetti OvalShape?

Facci sapere...
Ciao

Alexia Profilo | Newbie

rido xche quello che dite x me è algebra purtroppo.....
io vi allego il file direttamente xche sennò non ne verreste mai a capo con le mie spiegazioni
in Quanto alla spiegazione select case Mille Grazieeeeee....

P.S. mi puoi far sapere poi una volta che l'Hai visto?? son curioso di sapere.... anche xche a me funziona ho ricopiato il tutto e l'ho adattato al mio form... ma tutto tace pare funzionare

Grazie di nuovo

Jeremy Profilo | Guru

Ciao.
Abbiamo scoperto che OvalShape è di tipo Microsoft.VisualBasic.PowerPacks.OvalShape .... finalmente!

Purtroppo non ho potuto mandare in esecuzione il tuo progetto perchè non i riferimenti a questo componente .... pertanto, ho preso qualche informazione dal file .designer, ed ho prodotto quanto segue:
Imports Microsoft.VisualBasic.PowerPacks Public Class Form1 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load For Each cnt As Control In Me.Controls If TypeOf cnt Is ShapeContainer Then For Each ovs As OvalShape In DirectCast(cnt, ShapeContainer).Shapes AddHandler ovs.click, AddressOf ovs_click Next End If Next End Sub Private Sub ovs_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim ovs As OvalShape = CType(sender, Ovalshape) If ovs.FillColor = Color.White Then ovs.FillColor.Cyan() Else ovs.FillColor.White() End If End Sub End Class

Il codice sopra .... è moooolto più .NET, in quanto, tratta gli oggetti in quanto tali.
Come ti dicevo .... non ho potuto provare il codice perchè non ho i riferimenti a questo componente .... ad ogni modo, dovrebbe funzionare .... sostituisci TUTTO il codice del Form1 con questo e poi .... facci sapere.
Ciao.

P.S. Per i prossimi progetti imposta Option Strict On nella scheda Compilazione delle proprietà di progetto ...... imparerai tante cose interessanti.
Ciao

Alexia Profilo | Newbie

Abbiamo scoperto che OvalShape è di tipo Microsoft.VisualBasic.PowerPacks.OvalShape... <------ vedevo questa scritta microsoft.vb.powerpacks... quando mi dava errori su errori ma che significa??

Il codice sopra .... è moooolto più .NET, in quanto, tratta gli oggetti in quanto tali.<----- sorry??? io faccio ma più che altro SFASCIO ma che differenza fa??

P.S. Per i prossimi progetti imposta Option Strict On nella scheda Compilazione delle proprietà di progetto<----- option strict a cosa serve?? e lo devo impostare ogni volta che creo un progetto????

Scusami se Ti fracasso il cervello con tutte ste domande.... ma acchiappo ben poco... ... spero che un giorno qualcosa capiro......

ora Jeremy ti chiedo un altra cosa nell'altro post dove hai messo un codice di correzione ... --- ...
Chiaro Sempre con Molti XXXXXXXXXXpiacere
Grazzissssssime a Tutti

Jeremy Profilo | Guru

Ciao.
Mi piacerebbe star qui a scriverti un poema per spiegarti tutto quanto ..... ma ti farebbe molto più bene se comprassi un buon libro sull'argomento.
Se poi hai bisogno di qualche info in più .... magari spiegata con un linguggio più "normale" puoi sempre scriverci ancora.
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5