Oppure

Loading
20/10/11 21:17
it9tzz
Però non funziona:d o, almeno, da principiante non ho capito cosa dovrebbe succedere....
Trascrivo il ( semplice codice ) ma quando lancio l'istruzione non succede nulla. Grazie

Private Sub Form1_Paint()
Dim i, h As Integer
For i = 0 To Form1.Height
i = i + 14
For h = 0 To Form1.Width
Form1.ForeColor = Form1.ForeColor + 10
Form1.Line (h, i)-(i, 0)
h = h + 10
Next
Next
Form1.Refresh
End Sub
aaa
21/10/11 2:11
TermYnator
Chi ha scritto quel codice, di VB sapeva pochino...
Il codice funzionante (ammesso e non concesso che il tuo form si chiami Form1) è questo:
Option Explicit
Private Sub Form_Load()
Form1.ForeColor = &HFF&
End Sub

Private Sub Form_Paint()
Dim i, h As Integer
On Error GoTo fine
For i = 0 To Form1.Height
i = i + 14
For h = 0 To Form1.Width
Form1.ForeColor = Form1.ForeColor + 10
Form1.Line (h, i)-(i, 0)
h = h + 10
Next
Next
Form1.Refresh
Exit Sub
fine:
End Sub


Il codice che hai presentato, contiene due errori:
Il primo errore, è nella dichiarazione dell'evento Paint. In VB, l'evento relativo ad un form, si chiama Form_Paint() e non Form1_Paint().
Nel tuo codice quindi, l'evento paint non richiama alcun codice :)

Il secondo errore, è insito nel valore che il codice da alla proprietà forecolor di form1, se usi il colore di default che VB attribuisce alla proprietà forecolor (valore di sistema).
VB usa valori long per l'attribuzione dei colori. Tali valori nella tabella delle proprietà, sono rappresentati in forma esadecimale a 8 byte.

I primi due bite a sinistra, se eguali a "80", indicano che il colore appartiene ad una tabella stabilita dal sistema.
Gli ultimi due bytes, indicano invece il codice che il sistema attribuisce a quel colore. Tali codici rappresentano poco più di una ventina di colori.
Dal momento che il tuo codice passa da un colore all'altro con incrementi di 10, al terzo incremento tenta di attribuire un colore che non esiste, e da un errore.

I colori "normali, invece, hanno il primo gruppo eguale a "00".
i seguenti tre gruppi di bytes, rappresentano tre valori (da 0 a 255 in numerazione decimale) che indicano le componenti blu, verde rosso.

Prendiamo come esempio: &H80000000&, e &H00FF8080&.
Il primo colore ( &H80000000&;) è il nero di sistema.
il secondo colore ( &H00FF8080&;) avendo i primi due byte a 0, è un colore normale,le cui componenti sono:
Blu=255 (FF)
verde=128 (80)
rosso=128 (80)

In questo ultimo caso, ha un senso incrementare il valore di 10 punti per volta.
Ecco perchè,nell'evento Load del form, il codice suggerito imposta la proprietà forecolor su un rosso (&HFF&;). L'intercettatore di errori, serve per evitare che incrementando di continuo il valore della proprietà, si ottengano valori non validi per la proprietà (troppo grandi).
Spero di averti aiutato ...




Ultima modifica effettuata da TermYnator 21/10/11 2:27
aaa