JavascriptProva

domenica 28 luglio 2013

Disposizione di controlli (TextBoxes) a runtime in righe e colonne

Adesso vorrei disporre diverse textboxes una sopra l'altra.
Non mi ricordo la tecnica...

Ecco: il Top viene ottenuto dal risultato intero della divisione del numero ordinale della casella per il numero di caselle in una riga, mentre il Left viene ottenuto dal risultato del modulo del numero ordinale della casella per il numero di caselle in una riga.

Mi pare che sia così...

Non precipitiamo... Facciamo ora una semplice colonna di caselle (TextBox)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For n = 0 To 9
            Dim txt As New TextBox
            txt.Top = txt.Height * (n / 1)
            Controls.Add(txt)
        Next
        
    End Sub
Ecco: ho voluto aggiungere a runtime dieci TextBoxes impilate, con righe della lunghezza di 1.



Ora provo con righe di tre elementi.

E mi viene una porcheria! Grazie! Ho scordato di rendere intero il risultato della divisione! Finchè la divisione era per uno, il risultato era necessariamente intero, essendo rappresentato dal dividendo pari pari... ma adesso, dividendo per un numero diverso, viene fuori la cavolata!

Ricordo vagamente uno slash inverso come operatore di divisione intera... ricordo bene?

Sembrerebbe proprio di sì!

E infatti:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For n = 0 To 9
            Dim txt As New TextBox
            txt.Top = txt.Height * (n \ 3)
            txt.Left = txt.Width * (n Mod 3)
            Controls.Add(txt)
        Next
        
    End Sub
...adesso riesce tutto alla perfezione:

Nessun commento:

Posta un commento