Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [vb6] Creare una listview run-time

    Ciao a tutti,
    qualcuno potrebbe dirmi per favore come posso creare una listview in fase di esecuzione di uno script?

    ehm.. se possibile la lv creata dovrebbe essere contenuta in un foglio di un sstab..

    Grazie
    xxx

  2. #2
    Ciao, sperando di aver capito bene ciò di cui hai bisogno, potresti fare come ti indico appresso.
    Dopo aver disegnato la ListView (in questo esempio la chiamo ListView1):

    Esempio in Visual Basic 6.0


    ListView1.ColumnHeaders.Clear
    ListView1.ColumnHeaders.Add , , "Intestazione1", 1000
    ListView1.ColumnHeaders.Add , , "Intestazione2", 1000, lvwColumnCenter
    ListView1.ColumnHeaders.Add , , "Intestazione3", 1000, lvwColumnRight

    (Ovviamente al posto di "Intestazionex" metterai la tua descrizione...)


    Questo codice, permette di disegnare tre colonne (ti ho indicato anche come disporre il testo; sulla prima colonna l'allineamento è giocoforza a sinistra). Con le ListView è possibile anche creare una griglia di contenimento dei dati. Se la soluzione ti piace, dovrai inserire questa riga di codice:

    ListView1.GridLines = True

    Ora resta da "popolare" la ListView. Avrei però bisogno di conoscere la "fonte" dei dati.

    Comunque ti faccio vedere un piccolo esempio.


    Public RigaLV As ListItem - da mettere nella zona di dichiarazione
    delle variabili

    Set RigaLV = ListView1.ListItems.Add(, , DATO)
    RigaLV.SubItems(1) = DATO
    RigaLV.SubItems(2) = DATO

    E' anche possibile "formattare" ogni singola cella.

    Qui è ipotizzata la colonna 2 che contiene dati in grassetto e di colore rosso.

    RigaLV.ListSubItems.item(1).Bold = True
    RigaLV.ListSubItems.item(1).ForeColor = vbRed

    Ovviamente al posto di DATO, ciò che ti interessa.

    Fammi sapere.

    Giulio C. - Roma

  3. #3
    Ciao e innanzitutto grazie per la disponibilità, ma purtroppo il problema è un altro..
    Il mio problema non è popolare la listview ma crearla ex-novo da codice.
    In base ad un campo categorie del mio db creo tante pagine in un sstab quante sono queste categorie. Poi in ogni pagina del tab devo inserire la listview (ma ovviamente non so quante pagine ci saranno a priori e quindi non posso creare di conseguenza le listview in designtime)

    Spero di essermi spiegato meglio
    xxx

  4. #4
    Ciao.
    Mi sono ricollegato ora ed ho forse capito meglio il tuo problema.
    Se si tratta di creare una ListView in forma dinamica, ho provato questo sistema in un form; poi vedi se puoi applicare il tutto alle tue esigenze, ok? (Ora e tardi e andrei a fare le ninne!)


    Esempio:

    Option Explicit

    Private Sub Form_Load()
    Form1.Controls.Add "MSComctlLib.ListViewCtrl.2", "ListView1"
    With Form1!ListView1
    .Visible = True
    .View = lvwReport
    .GridLines = True
    .Width = 3300
    .Height = 2000
    .ColumnHeaders.Clear
    .ColumnHeaders.Add , , "1", 1000
    .ColumnHeaders.Add , , "2", 1000, lvwColumnCenter
    .ColumnHeaders.Add , , "3", 1000, lvwColumnRight
    End With
    End Sub

    Con questo sistema (che ho provato ripeto di corsa), è possibile creare dinamicamente una listview con intestazioni di colonne e griglie in un form.
    Ho però anche notato che per funzionare, va deselezionata una voce nella finestra della proprietà del progetto:

    Progetto -> Proprietà del progetto -> Crea -> Rimuovi informazioni sui controlli ActiveX non utilizzati.

    Fai delle prove mettendo al posto del form la tua SSTab; credo comunque che questo metodo utilizzato possa esserti utile.

    Fammi sapere.

    P.S.: Salutami Spezia, dove ho carissimi amici!

    Giulio C. - Roma

  5. #5
    Ciao e ancora grazie per il tuo aiuto.
    Appena mi scollego provo subito il tuo esempio

    Se puo' essere d'aiuto dopo un lungo peregrinare su internet ho trovato un modo per creare oggetti run time (non solo listview ma anche quelli).

    Basta trascinare sul form un listview in design mode, dargli visible=false e index = 0 (in questo modo l'oggetto verra' trattato come un array)

    Dopodiche' se ne potranno richiamare e ricreare quanti se ne vogliono nel seguente modo posizionandoli dove meglio si crede:
    codice:
    Load listview1(listview1.Ubound+1)
    With listview1(listview1.Ubound)
       .Move X, Y, W, H
       .Visible = True
       'aggiunta colonne, headers, righe ecc
    End With
    Grazie ancora per il tempo che mi hai dedicato, ciao




    Originariamente inviato da Giulio C.
    ...

    P.S.: Salutami Spezia, dove ho carissimi amici!

    Te la/li saluterò senz'altro!
    xxx

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.