Newsgroup: it.comp.lang.visual-basic
Titolo: Istruzione Enum...

Ciao a tutti,
non ho ben capito a che serve questa Enum.
Se ho capito (ma ne dubito) servirebbe per fare una cosa del genere:
Public Enum Semaforo
  VbRosso=1
  VbVerde=2
  VbGiallo=3
End Enum
if TextColore.text=Semaforo.vbrosso then
Ma non mi sembrerebbero molto utile, sembra una type di costanti.
-- 
DBMS Firebird
VB6 + Ado

Andrea ha scritto:

Proprio quello, che poi non ti possa sembrare utile....è opinabile.
@Alex

 Ma non mi sembrerebbero molto utile, sembra una type di costanti.
In effetti e' un insieme di costanti.
Prova una cosa del genere:
Dim ss As Semaforo
If ss = vbrosso Then
    '...
    '...
End If
Ciao!
    Alex

esatto serve a semplificarti il lavoro 

 Ma non mi sembrerebbero molto utile, sembra una type di costanti.
E' così inutile che VB (o .net) le usa pesantemente :)
Serve sostanzialmente a tenere ordine nelle costanti poichè vengono 
raggruppate in base al loro scopo.
In realtà la tua enum dovrebbe chiamarsi ColoriDelSemaforo, Semaforo sarà la 
classe che implementa la proprietà Colore di tipo ColoriDelSemaforo.
Ciao 

 Ma non mi sembrerebbero molto utile, sembra una type di costanti.
Ringrazio tutti :)
Vedrò di utilizzare da qui in avanti.
In effetti i vari VbYes, VbChecked, VbNewline ecc. sono molto comodi


> Ma non mi sembrerebbero molto utile, sembra una type di costanti.
Considera che un enum può essere public anche in una classe, per cui puoi, ad esempio, far sì che una proprietà ritorni, come tipo di dati, una delle variabili dell'enumerazione.
In questo modo, senza entrare nella classe e leggerne la documentazione, l'autocomplete ti mostrerà direttamente i valori che la proprietà può ritornare.
Non so se detta così si capisce, ma è più utile di quanto non sembri.

 così si capisce, ma è più utile di quanto non sembri.
Credo di aver capito più o meno, non avendo usato classi non ho proprio
chiaro, ma credo si possa assimilare ad una cosa del tipo
check1.value=vbChecked
o a msgbox "pippo",VbQuestion...
Tnx


 o a msgbox "pippo",VbQuestion...
Non è che "si possono assimilare": vbChecked fa parte dell'enum 
CheckBoxConstants e vbQuestion dell'enum VbMsgBoxStyle (Premi F2 per 
controllare)
Ciao 

 controllare)
Intendevo che facendo una classe (che ancora me le devo studiare un po' per
capire bene che sono), si possono utilizzare in maniera analoga per quella
classe cosě come usiamo VbQuestion per le msgbox o vbChecked per le
checkBox.
Diciamo "si possono paragonare", ho sbagliato il termine :)


 o a msgbox "pippo",VbQuestion...
Proprio così :-)

 Diciamo "si possono paragonare", ho sbagliato il termine :)
Ho capito quello che vuoi dire, ma non si possono paragonare perchč *sono* 
la stessa cosa.
Ciao 

 Ma non mi sembrerebbero molto utile, sembra una type di costanti.
Un gruppo Enum é un gruppo di costanti, e si sfrutta con IntelliSense, anche
al di fuori delle classi.
Public Enum Semaforo
    VbRosso=1
    VbVerde=2
    VbGiallo=3
End Enum
Private Sub ColoraTextBox(colore As Semaforo)
    TextColore.ForeColor = colore
End Sub
Private Sub Form_Load()
    ColoraTextBox VbRosso
End Sub
In questo esempio (che puoi copiancollare e provare), non appena scrivi
nell'ultima sub ColoraTextBox e premi la barra spaziatrice, IntelliSense ti
fa apparire l'elenco delle opzioni disponibili.
Se io avessi utilizzato la grafia della chiamata esplicita:
    Call ColoraTextBox(VbRosso)
IntelliSense mi avrebbe aperto l'elenco non appena digitata la prima
parentesi.
Serve per evitare di inserire valori non compresi nell'Enum.
Spero ti sia utile. Ciao.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Spero ti sia utile. Ciao.
Ecco ora credo di aver capito bene.
E devo dire che effettivamente è più utile di quanto mi potesse sembrare.
Ho già trovato diversi posti nel mio codice dove non ci starebbe male :)


 Diciamo "si possono paragonare", ho sbagliato il termine :)
Pensa anche alle proprieta' dei controlli .... tipo
tu scrivi in 2 secondi una cosa tipo :
"oggetto.ordinamentocolonna = vbAlignLeft"
se non avessi gli enum descrittivi impazziresti a scrivere tipo :
"oggetto.ordinamentocolonna = 0" provi, poi va a finire che e' 1... poi no, 
ti serve allineato a sinistra e in alto che e' il valore numerico 4 .... 
sicuramente fai prima con l'intellisense a scegliere tra le variabili : 
"vbAlignTopLeft" non trovi  ?
Anche per i confronti ... tipo
If Oggetto.Colore = vbred then oggetto.colore = vbBlue
Prova a pensare a quanto ci metti a scrivere una cosa simile al posto di 
andarti a trovare i valori esadecimali dei colori...
Sia lodato l'inventore degli Enum !!!!

 Spero ti sia utile. Ciao.
Ciao ho fatto questa prova con un programma in cui entro a riga di comando
con un numero che mi rappresenta un tipo di stampa/procedura:
In un modulo:
Public Enum TipoScelta
  vbAumento = 1
  vbSetta = 2
  vbScambio = 3
  vbCopia = 4
End Enum
Public Scelta As TipoScelta
Se faccio scelta= mi appare intellisense
se faccio
Select case scelta
  Case ... Qui non mi appare, e se lo scrivo minuscolo mi scrive minusco
anche la dischiarazione dell'Enum
E' un modo errato di usarlo? A me farebbe comodo perchè almeno non mi devo
ricordare che con scelta =4 devo fare la copia.
Grazie ancora



prova con:
Select Case True
 Case Scelta=...
Quanto al problema del minuscolo/maiuscolo lo fa sempre anche a me salvo 
quando l'Enum è dichiarato in una DLL esterna e sto lavorando sul layer 
superiore.
ciao,
Elef 

 ricordare che con scelta =4 devo fare la copia.
E' normale.
Nel senso che fa cosě, anche se secondo me č un bel buco.
Per la seconda Microsoft la spaccia per una feature ("it's not a bug: it's a 
feature") cioč cosě tu puoi correggere il nome dell'enum senza andare sulla 
dichiarazione.
Per la messagebox puoi scaricarti gli mztools (
www.mztools.com
, se sono 
ancora gratuiti) e usare l'aiuto per le select case.
Ciao 

 anche la dischiarazione dell'Enum
Anche qui, VB si comporta sempre così con le costanti, e un blocco Enum non
è altro che un gruppo di costanti.
Spero ti sia utile. Ciao.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 dichiarazione.
Capito :) E' una cosa abbastanza odiosa comunque. :)
Per gli mztools li avevo già scaricati, appena arrivo ad un punto fermo li
provo :)


 True e poi Case = vbRed... Case = vbYellow..., eccetera
Capito, per ora lascio cosě tanto il programmino di stampa č finito, in
caso di programmi piů complessi sicuramente lo userň in questo modo,
altrimenti č abbastanza scomodo.


 superiore.
Grazie anche a te :)
Non ho DLL per ora ;)
Tnx



ahi ahi!
Questo ragionamento č la base di progetti disastrosi.
E poi ricordati che siamo in italia, quindi niente č piů definitivo delle 
cose provvisorie.
Meglio fare il lavoro fatto bene dall'inizio perchč poi rimetterci mano 
significa mettersele nei capelli.
Ciao