Differenze tra le versioni di "WITH...END WITH"
(10 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
La parola-chiave '''WITH''' indica una struttura di controllo che consente di raccogliere più risorse di una Classe, evitando che sia ripetuta per ciascuna di quelle risorse l'identificatore dell'Oggetto della Classe. | La parola-chiave '''WITH''' indica una struttura di controllo che consente di raccogliere più risorse di una Classe, evitando che sia ripetuta per ciascuna di quelle risorse l'identificatore dell'Oggetto della Classe. | ||
+ | <BR>Pertanto tale struttura di controllo può risultare utile come scorciatoia per raggruppare in un unico insieme le risorse di una Classe richiamate dall'Oggetto, della quale esso è istanza concreta. | ||
<BR>Detta struttura di controllo termina con la parola chiave '''End... With'''. | <BR>Detta struttura di controllo termina con la parola chiave '''End... With'''. | ||
<BR>All'interno della struttura "With...End With" le risorse della Classe sono impostate e precedute dal consueto Operatore, avente come simbolo il punto ('''.'''). | <BR>All'interno della struttura "With...End With" le risorse della Classe sono impostate e precedute dal consueto Operatore, avente come simbolo il punto ('''.'''). | ||
La sintassi può essere esplicitata come segue: | La sintassi può essere esplicitata come segue: | ||
− | <FONT Color=red>'''WITH'''</font> | + | <FONT Color=red>'''WITH'''</font> identificatore_della_struttura_di_controllo <FONT Color=gray>' ''E' sempre un Oggetto di una Classe''</font> |
.Proprietà = ... | .Proprietà = ... | ||
.Metodo(...) | .Metodo(...) | ||
.Etc | .Etc | ||
+ | <FONT Color=red>'''END WITH'''</font> | ||
+ | Mostriamo un semplice esempio pratico con una ''Label'', già posta sul ''Form'': | ||
+ | <FONT Color=red>'''WITH'''</font> Label1 | ||
+ | .X = 10 <FONT Color=gray>' ''Equivale a Label1.X = 10''</font> | ||
+ | .Y = 10 <FONT Color=gray>' ''Equivale a Label1.Y = 10''</font> | ||
+ | .W = 100 <FONT Color=gray>' ''Equivale a Label1.W = 100''</font> | ||
+ | .H = 100 <FONT Color=gray>' ''Equivale a Label1.H = 100''</font> | ||
+ | .Adjust() <FONT Color=gray>' ''Equivale a Label1.Adjust()''</font> | ||
<FONT Color=red>'''END WITH'''</font> | <FONT Color=red>'''END WITH'''</font> | ||
Riga 33: | Riga 42: | ||
End | End | ||
+ | |||
+ | |||
+ | ===Introduzione di un'istruzione estranea alla Classe=== | ||
+ | E' possibile inserire nella struttura di controllo anche un'istruzione particolare, estranea alla Classe cui fa riferimento l'Oggetto in questione, per ottenere ad esempio il valore della Proprietà dell'Oggetto o ritornato da un Metodo: | ||
+ | Public Sub Form_Open() | ||
+ | |||
+ | Dim Label1 As Label | ||
+ | |||
+ | '''With''' Label1 | ||
+ | .X = 10 | ||
+ | .Y = 10 | ||
+ | .W = 100 | ||
+ | .H = 100 | ||
+ | .Background = Color.Yellow | ||
+ | <FONT Color=red>Print .Background</font> | ||
+ | '''End With''' | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | ===Uso di una sotto-risorsa come identificatore della struttura di controllo=== | ||
+ | L'Identificatore della struttura "With...End With", laddove risulti utile, può essere anche un Oggetto seguito dall'Operatore "punto" ('''.''') e dal nome di una risorsa della Classe, qualora essa abbia delle sotto-risorse: | ||
+ | '''With <FONT Color=darkgreen>Oggetto</font><FONT Color=red>.Risorsa'''</font> | ||
+ | .sotto-risorsa1 = ... | ||
+ | .sotto-risorsa2 = ... | ||
+ | .sotto-risorsa3(...) | ||
+ | '''End With''' | ||
+ | Un esempio pratico può darsi richiamando la Proprietà ".Font": | ||
+ | '''With <FONT Color=darkgreen>Label1</font><FONT Color=red>.Font</font>''' | ||
+ | .Size = 12 | ||
+ | Print .TextSize("testo qualsiasi") | ||
+ | '''End With''' | ||
+ | laddove la Proprietà ".Size" e il Metodo ".TextSize()" sono, appunto, due sotto-risorse della Proprietà ".Font" (che del resto possiede tali risorse in quanto è essa stessa una Classe) della Classe ''Label'' | ||
Riga 38: | Riga 80: | ||
La struttura "With...End With" può essere utilizzata anche come scorciatoia per l'accesso all'array: | La struttura "With...End With" può essere utilizzata anche come scorciatoia per l'accesso all'array: | ||
<FONT Color=red>'''With'''</font> array | <FONT Color=red>'''With'''</font> array | ||
− | .[0] = "Primo inserimento" | + | '''.[0]''' = "Primo inserimento" |
− | .[1] = "Secondo inserimento" | + | '''.[1]''' = "Secondo inserimento" |
<FONT Color=red>'''End With'''</font> | <FONT Color=red>'''End With'''</font> | ||
+ | Così anche con Controlli che hanno degli array nelle loro risorse: | ||
+ | Public Sub Form_Open() | ||
+ | |||
+ | Dim hGrid As GridView | ||
+ | |||
+ | Me.Arrangement = Arrange.Vertical | ||
+ | |||
+ | <FONT Color=red>'''With'''</font> hGrid = New GridView(Me) As "GridView1" | ||
+ | .Expand = True | ||
+ | .Rows.Count = 10 | ||
+ | .Columns.Count = 4 | ||
+ | '''.[0, 0]'''.Text = "prima base" | ||
+ | '''.[1, 1]'''.Text = "seconda base" | ||
+ | '''.[2, 2]'''.Text = "terza base" | ||
+ | .Columns.Width = -1 | ||
+ | <FONT Color=red>'''End With'''</font> | ||
+ | |||
+ | End |
Versione attuale delle 04:47, 15 lug 2024
La parola-chiave WITH indica una struttura di controllo che consente di raccogliere più risorse di una Classe, evitando che sia ripetuta per ciascuna di quelle risorse l'identificatore dell'Oggetto della Classe.
Pertanto tale struttura di controllo può risultare utile come scorciatoia per raggruppare in un unico insieme le risorse di una Classe richiamate dall'Oggetto, della quale esso è istanza concreta.
Detta struttura di controllo termina con la parola chiave End... With.
All'interno della struttura "With...End With" le risorse della Classe sono impostate e precedute dal consueto Operatore, avente come simbolo il punto (.).
La sintassi può essere esplicitata come segue:
WITH identificatore_della_struttura_di_controllo ' E' sempre un Oggetto di una Classe .Proprietà = ... .Metodo(...) .Etc END WITH
Mostriamo un semplice esempio pratico con una Label, già posta sul Form:
WITH Label1 .X = 10 ' Equivale a Label1.X = 10 .Y = 10 ' Equivale a Label1.Y = 10 .W = 100 ' Equivale a Label1.W = 100 .H = 100 ' Equivale a Label1.H = 100 .Adjust() ' Equivale a Label1.Adjust() END WITH
Indice
Uso nella creazione di un Oggetto di una Classe
La struttura "With...End With" può essere utilizzata proficuamente anche all'atto dell'istanziazione da codice di un Oggetto di una Classe:
WITH identificatore_di_un_Oggetto = New Classe As "Gruppo_degli_Eventi" .Proprietà = ... .Metodo(...) .Etc END WITH
Mostriamo un esempio pratico, nel quale si imposteranno alcune risorse di una Label, usando la struttura "With...End With":
Public Sub Form_Open() Dim Label1 As Label With Label1 = New Label(Me) As "Label1" .X = 10 .Y = 10 .W = 100 .H = 100 .Background = Color.Yellow .Adjust() End With End
Introduzione di un'istruzione estranea alla Classe
E' possibile inserire nella struttura di controllo anche un'istruzione particolare, estranea alla Classe cui fa riferimento l'Oggetto in questione, per ottenere ad esempio il valore della Proprietà dell'Oggetto o ritornato da un Metodo:
Public Sub Form_Open() Dim Label1 As Label With Label1 .X = 10 .Y = 10 .W = 100 .H = 100 .Background = Color.Yellow Print .Background End With End
Uso di una sotto-risorsa come identificatore della struttura di controllo
L'Identificatore della struttura "With...End With", laddove risulti utile, può essere anche un Oggetto seguito dall'Operatore "punto" (.) e dal nome di una risorsa della Classe, qualora essa abbia delle sotto-risorse:
With Oggetto.Risorsa .sotto-risorsa1 = ... .sotto-risorsa2 = ... .sotto-risorsa3(...) End With
Un esempio pratico può darsi richiamando la Proprietà ".Font":
With Label1.Font .Size = 12 Print .TextSize("testo qualsiasi") End With
laddove la Proprietà ".Size" e il Metodo ".TextSize()" sono, appunto, due sotto-risorse della Proprietà ".Font" (che del resto possiede tali risorse in quanto è essa stessa una Classe) della Classe Label
Accesso ai vettori
La struttura "With...End With" può essere utilizzata anche come scorciatoia per l'accesso all'array:
With array .[0] = "Primo inserimento" .[1] = "Secondo inserimento" End With
Così anche con Controlli che hanno degli array nelle loro risorse:
Public Sub Form_Open() Dim hGrid As GridView Me.Arrangement = Arrange.Vertical With hGrid = New GridView(Me) As "GridView1" .Expand = True .Rows.Count = 10 .Columns.Count = 4 .[0, 0].Text = "prima base" .[1, 1].Text = "seconda base" .[2, 2].Text = "terza base" .Columns.Width = -1 End With End