+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 1 su 1

Ricetta per la preparazione di DataRepeater In VB.NET

  1. #1
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    RICETTA PER LA PREPARAZIONE DI DATAREPEATER IN VB.NET

    Tutti sanno che il DataRepeater di VB6 non è stato portato in VB.NET. Vero.
    Tutti sanno che non si può usare un repeater in VB.NET. Falso

    Con questo lavoro andremo a crearci un repeater analogo a quello di VB6 con gli strumenti standard messi a disposizione da Visual Basic 2005.

    Tempo di cottura:
    Circa un ora.

    Ingredienti:
    Per realizzare il nostro DataRepeater fatto in casa abbiamo bisogno di:
    Form1 (finestra principale dell’applicazione).
    Form2 (finestra che sarà ripetuta nel repeater)
    Panel (controllo che conterrà la nostra creazione)
    Button (per apportare le modifiche ai dati inseriti)
    TextBox (per contenere i dati che dobbiamo visualizzare).
    Linea (delimita i vari moduli visulizzati nel repeater)

    Preparazione:
    Creare la Form1 e inserire dentro Panel e Button.
    Il panel in alto, di conseguenza il button rimane in basso.
    Creare la Form2. Inserirci dentro una textbox vicino al bordo superiore e una linea a quello inferiore.
    La linea può essere inserita da codice nell’evento paint della Form2 o in fase di progettazione, a piacere.
    Togliere alla Form2 il bordo, con la proprietà FormBorderStyle impostata su None.

    Lavorazione:
    Obiettivo di questo piatto è quello di utilizzare la Form2 come modulo di visualizzazione dati, da inserire all’interno del Panel di Form1.
    Per ottenere una migliore visualizzazione della portata si raccomanda di impostare in Panel la proprietà Autoscroll a True, in modo da potere visualizzare il menu proposto.
    Andare nella finestra di codice di Form1 e scrivere la seguente routine:
    Sub CreaPanel(ByVal Repeater As Panel, ByVal formType As Type, ByVal MyArray As Array)      'Creo il repeater
    
    'Questa variabile serve per potere affiancare un modulo di seguito all'altro
    Dim ypos As Integer = 0         'Qui metto l'altezza della form del modulo
    Repeater.Visible = False        'Imposto a false il repeater, per evitare che si veda che gli elementi sono inseriti nel panel uno alla volta
    
    'Valuto quanti elementi ho nella mia matrice
    For index As Integer = 0 To MyArray.Length - 1
    
    'Creo il modulo da inserire nel panel
    Dim Modulo As Form = DirectCast(Activator.CreateInstance(formType), Form)
    
    'Questa riga permette di inserire la form del modulo dentro quella principale
    Modulo.TopLevel = False     'NOTA BENE! NON si tratta di form MDI Parent/Child!
    
    'Creo l'oggetto che inserirà i dati nel modulo
    Dim Elemento As Object = MyArray.GetValue(index)
    
    'Posiziono il modulo
    Modulo.Top = ypos
    
    'Preparo i vari moduli
    For Each Controllo As Control In Modulo.Controls
    
    'Questa condizione è stata posta perchè voglio inserire i dari proprio in TextBox1
    If Controllo.Name = "TextBox1" Then
    Controllo.Text = Elemento       'Copio i valori
    End If
    Next
    
    'E li inserisco nel panel
    Repeater.Controls.Add(Modulo)
    
    'Rendo il repeater visisbile
    Modulo.Visible = True
    
    'Prendo la psizione del modulo seguente
    ypos += Modulo.ClientSize.Height
    Next
    
    'Quando tutto è pronto, lo rendo visibile
    Repeater.Visible = True
    
    End Sub
    
    Queste righe permettono di montare la nostra portata e vi presentarla al meglio.
    A questo punto siamo a metà del lavoro. Dobbiamo ancora preparare la parte relativa alla gestione dei dati modificati.
    Per fare ciò possiamo creare una seconda routine e inserirci il codice mostrato:
    Sub LoadDataInPanel(ByVal Repeater As Panel, ByVal formType As Type, ByVal DataArray As Array)     'leggo i valori dal repeater
    
    'Questa variabile gestisce l'indice dell'array di destinazione
    Dim i As Integer
    
    'Dimensiono la matrice di destinazione in base agli elementi presenti nel repeater
    ReDim Preserve Finale(Iniziale.Length - 1)
    
    'A questo punto è necessario andare a cercare i controlli, e i relativi valori
    For Each Modulo As Control In Repeater.Controls     'Inizialmente carco le form contenute dentro ai panel
    If TypeOf Modulo Is Form Then
    
    For Each Controllo As Control In Modulo.Controls    'Poi cerco i controlli all'interno delle form
    If TypeOf Controllo Is TextBox Then
    
    'Nel caso ci siano più TextBox prendo solo quella che mi serve
    If Controllo.Name = "TextBox1" Then
    Finale(i) = Controllo.Text      'Inserisco il testo nella matrice
    i = i + 1                       'Incremento l'indice dell'array
    End If
    End If
    Next
    End If
    Next
    
    'Controllo che il lavoro sia stato effettuato correttamente
    For i = 0 To Finale.Length - 1
    MessageBox.Show(Finale(i))
    Next
    End Sub
    
    A questo punto la lavorazione è praticamente terminata.
    Guarnire il piatto con il codice necessario al funzionamento della Form1 e del Button in questo modo:
    'Dichiaro gli array necessari per ottenere l'obiettivo prefisso
    Dim Iniziale() As String = {"Pasta", "Riso", "Arrosto", "Lesso", "Pesce", "Contorni", "Frutta", "Gelato", "Caffè", "Ammazzacaffè"}	'Il primo contiene già i valori da visualizzare nella form
    Dim Finale(0) As String                     'Il secondo invece è vuoto, prenderà i valori dopo che saranno stati modificati
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Carico gli elementi nella form come DataRepeater
    CreaPanel(Panel1, GetType(Form2), Iniziale)   'Form2 è il form da caricare in Panel1 come modulo di Repeater
    End Sub
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    'Prendo i valori contenuti nei controlli dopo che sono stai modificati
    Call LoadDataInPanel(Panel1, GetType(Form2), Finale)
    
    End Sub
    
    A questo punto il piatto è pronto e può essere servito. Potete brindare con un vino corposo e asciutto.
    Un ottimo abbinamento potrebbe essere un Brunello di Montalcino del 2004.
    Buon appetito.

    Se il menu proposto non fosse di vostro gradimento, potete tranquillamente cambiarlo.
    La matrice di destinazione conterrà le vostre modifiche.
    File allegati File allegati
    Ultima modifica di Master85; 08-12-2007 12:55 
    ℹ️ Leggi di più su cippalippa ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Preparazione File CAB di installazione programmi VB6
    Da abecciu nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 14-11-2017, 18:10
  2. Risposte: 4
    Ultimo Post: 19-04-2016, 14:18
  3. Problema visualizzazione dati in datarepeater
    Da Fedeciprova nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 29-03-2016, 16:26
  4. Come usare il controllo DataRepeater
    Da Cereal Killer nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 31-01-2013, 09:36
  5. Creazione datarepeater
    Da gaetanodimatteo nel forum Visual Basic .Net
    Risposte: 16
    Ultimo Post: 07-06-2008, 23:11