Come accedere a ImageList da controllo TreeView e ListView con codice di Visual FoxPro

Traduzione articoli Traduzione articoli
Identificativo articolo: 170146 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sommario

In questo articolo viene illustrato come immagini di un controllo ImageList è possibile accedere a livello di programmazione TreeView e ListView .

Informazioni

In questa sezione sono due esempi di codice. Il primo esempio viene illustrato come le immagini di ImageList possono essere assegnate a un controllo TreeView . In questo esempio se Foglie vengono aggiunti a un nodo di TreeView , viene assegnata un'icona di cartella chiuso al nodo. Se un nodo contenente Foglie viene espanso, comprimere relativa modifiche sull'icona per una cartella aperta e al momento, assume nuovamente la cartella di chiusura.

Il secondo esempio viene illustrato come le immagini di ImageList possono essere assegnate a un controllo ListView . In questo esempio, quando viene creata una voce di elenco viene assegnato un'icona grande. Le icone di elemento possono essere attivate quindi tra un piccolo e un'icona grande. Per ogni tipo di icona--grande e piccole--vengono utilizzati controlli ImageList separati; in caso contrario, entrambi i tipi di icone visualizzato stessa dimensione.

Nota Le cartelle contenenti i file di icona e bitmap sono state modificate in Visual FoxPro 6.0. Il nuovo percorso per le icone è:
  home(4)+"icons\office\<filename>"
				
il nuovo percorso per le bitmap è:
   home(4)+"bitmaps\outline\<Filename>"
				
seguente è il codice di esempio per nel primo esempio assegnare immagini ImageList a un controllo TreeView :
   LVForm=CREATEOBJECT("MyLVForm")
   LVForm.SHOW
   READ EVENT

   *** Define the Form to hold and display all the controls ***
   DEFINE CLASS MyLVForm AS FORM
      LEFT=23
      HEIGHT=250
      WIDTH=425
      mndx=0
      *** Add the Control Objects to the Form ***
      ADD OBJECT ImageList1 AS MyImageList
      ADD OBJECT TreeView1  AS MyTreeView
      ADD OBJECT AddNode    AS ANCButton
      ADD OBJECT AddLeaf    AS ALCButton
      ADD OBJECT mDelete    AS DCButton
      ADD OBJECT mExit      AS ECButton
   ENDDEFINE

   *** Define ImageList to Hold Images for the TreeView Control ***
   DEFINE CLASS MyImageList AS OLECONTROL
      OLECLASS="COMCTL.ImageListCtrl.1"
      TOP=36
      LEFT=420
      PROCEDURE INIT
         THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home()+;
               "samples\graphics\bmps\outline\closed.bmp"))
         THIS.OBJECT.ListImages.ADD(2,,LOADPICTURE(home()+;
               "samples\graphics\bmps\outline\open.bmp"))
      ENDPROC
   ENDDEFINE

   *** Define the TreeView Control ***
   DEFINE CLASS MyTreeView AS OLECONTROL
      OLECLASS="COMCTL.TreeCtrl.1"
      TOP=24
      HEIGHT=169
      WIDTH=300
      LEFT=20
      .OBJECT.LineStyle=1
      VISIBLE=.T.

      *** Set ImageList property to ImageList1 Images ***
      PROCEDURE INIT
         THIS.OBJECT.ImageList=THISFORM.ImageList1.OBJECT
      ENDPROC
      PROCEDURE nodeclick
         LPARAMETERS NODE
      ENDPROC

      *** Assign Image for Collapsed object ***
      PROCEDURE collapse
         LPARAMETERS NODE
         IF !EMPTY(NODE.IMAGE)
            NODE.IMAGE=1
         ENDIF
      ENDPROC

      *** Assign Image for Expanded object ***
      PROCEDURE expand
         LPARAMETERS NODE
         IF !EMPTY(NODE.IMAGE)
            NODE.IMAGE=2
         ENDIF
      ENDPROC
   ENDDEFINE
   *** Define the Add Node Command Button ***
   DEFINE CLASS ANCButton AS COMMANDBUTTON
      TOP=70
      LEFT=350
      HEIGHT=18
      WIDTH=59
      CAPTION="Add Node"
      VISIBLE=.T.
      PROCEDURE CLICK
         mndxtxt=""
         mndxtxt=ALLTRIM(STR(THISFORM.mndx))

         THISFORM.TreeView1.nodes.ADD(,2,mndxtxt+;
          "_",REPLICATE(mndxtxt,5),,0)
         THISFORM.mndx=THISFORM.mndx+1
         THISFORM.TreeView1.ENABLED=.T.
         THISFORM.AddLeaf.ENABLED=.T.
         THISFORM.mDelete.ENABLED=.T.
      ENDPROC
   ENDDEFINE
   *** Define the Add Leaf Command Button ***
   DEFINE CLASS ALCButton AS COMMANDBUTTON
      TOP=100
      LEFT=350
      HEIGHT=18
      WIDTH=59
      CAPTION="Add Leaf"
      VISIBLE=.T.
      ENABLED=.F.
      PROCEDURE CLICK
         so=THISFORM.TreeView1.SELECTEDITEM
         IF !ISNULL(so)
            THISFORM.TreeView1.nodes.ADD(so.INDEX,;
                      4,,"Sub"+ALLTRIM(so.TEXT),,0)
            so.IMAGE=1
         ENDIF
         THISFORM.REFRESH
      ENDPROC
   ENDDEFINE
   *** Define the Delete Command Button  ***
   DEFINE CLASS DCButton AS COMMANDBUTTON
      TOP=150
      LEFT=350
      HEIGHT=18
      WIDTH=59
      CAPTION="Delete"
      VISIBLE=.T.
      ENABLED=.F.
      PROCEDURE CLICK
         o=THISFORM.TreeView1.SELECTEDITEM
         IF !ISNULL(o)
            IF !ISNULL(o.PARENT)
               IF o.PARENT.children<2
                  o.PARENT.IMAGE=0
               ENDIF
            ENDIF
            THISFORM.TreeView1.nodes.REMOVE(o.INDEX)
         ENDIF
      ENDPROC
   ENDDEFINE
   *** Define the Exit Command Button ***
   DEFINE CLASS ECButton AS COMMANDBUTTON
      TOP=215
      LEFT=180
      WIDTH=70
      HEIGHT=25
      CAPTION="Exit"
      VISIBLE=.T.
      PROCEDURE CLICK
         THISFORM.RELEASE
         CLEAR EVENTS
      ENDPROC
   ENDDEFINE

   Following is the sample code for the Second example:

   LVForm=CREATEOBJECT("MYLVForm")
   LVForm.SHOW
   READ EVENT

   *** Define the Form that will hold and display the controls ***
   DEFINE CLASS MyLVForm AS FORM
      LEFT=23
      HEIGHT=300
      WIDTH=478
      lvitm=0
      lvitxt=''
      ADD OBJECT ImageList2 AS MyImageList1
      ADD OBJECT ImageList3 AS MyImageList2
      ADD OBJECT ListView1  AS MyListView
      ADD OBJECT ADDITEM    AS AICButton
      ADD OBJECT LSIOption  AS LSIOGroup
      ADD OBJECT mDelete    AS DButton
      ADD OBJECT MExit      AS ExButton
   ENDDEFINE

   *** Need separate ImageList Controls for Large and Small Icons of
   *** ListView otherwise both type of icons will appear as same size
   ***
   *** Define ImageList to Hold Large Icon Image for the ListView
   *** Control

   DEFINE CLASS MyImageList1 AS OLECONTROL
      OLECLASS="COMCTL.ImageListCtrl.1"
      TOP=204
      LEFT=420
      PROCEDURE INIT
         THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home(4)+;
             "icons\office\folder01.ico"))
      ENDPROC
   ENDDEFINE

   *** Define ImageList to Hold Small Icon Image for the
   *** ListView Control

   DEFINE CLASS MyImageList2 AS OLECONTROL
      OLECLASS="COMCTL.ImageListCtrl.1"
      TOP=264
      LEFT=420
      PROCEDURE INIT
         THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home(4)+;
               "bitmaps\outline\closed.bmp"))
      ENDPROC
   ENDDEFINE

   *** Define the ListView Class ***
   DEFINE CLASS MyListView AS OLECONTROL
      OLECLASS="COMCTL.ListViewCtrl.1"
      TOP=24
      HEIGHT=169
      WIDTH=275
      LEFT=36
      .OBJECT.LineStyle=1
      VISIBLE=.T.

   *** Set the ListView Icons property to Images in ImageList1 ***
   *** and SmallIcons property to Images in ImageList2 ***

      PROCEDURE INIT
         THIS.OBJECT.icons=THISFORM.ImageList2.OBJECT
         THIS.OBJECT.smallicons=THISFORM.ImageList3.OBJECT
      ENDPROC
   ENDDEFINE

   *** Define the Add Item Button Class ***
   DEFINE CLASS AICButton AS COMMANDBUTTON
      TOP=50
      LEFT=360
      HEIGHT=18
      WIDTH=59
      CAPTION="Add Item"
      VISIBLE=.T.
      PROCEDURE CLICK
         THISFORM.lvitm=THISFORM.lvitm+1
         THISFORM.lvitxt=ALLTRIM(STR(THISFORM.lvitm))
         x=THISFORM.ListView1.OBJECT.listitems.ADD;
            (,THISFORM.lvitxt+"_","Item"+THISFORM.lvitxt,)
         x.smallicon=1
         x.ICON=1
         THISFORM.LSIOption.ENABLED=.T.
         THISFORM.mDelete.ENABLED=.T.
         THISFORM.REFRESH
      ENDPROC
   ENDDEFINE

   *** Define the Large/Small Icon Option Group ***
   DEFINE CLASS LSIOGroup AS OPTIONGROUP
      BUTTONCOUNT = 2
      VALUE = 1
      HEIGHT = 39
      LEFT = 340
      TOP = 80
      WIDTH = 96
      Option1.CAPTION = "Large Icon"
      Option1.LEFT = 11
      Option1.TOP = 5
      Option1.WIDTH = 82
      Option1.NAME = "Option1"
      Option2.CAPTION = "Small Icon"
      Option2.LEFT = 11
      Option2.TOP = 20
      Option2.WIDTH = 82
      Option2.NAME = "Option2"
      PROCEDURE INTERACTIVECHANGE
         DO CASE
         CASE THIS.VALUE=1
            THISFORM.ListView1.OBJECT.VIEW=0
         CASE THIS.VALUE=2
            THISFORM.ListView1.OBJECT.VIEW=1
         ENDCASE
         THISFORM.REFRESH
      ENDPROC
   ENDDEFINE
   *** Define the Delete Button Class ***
   DEFINE CLASS DButton AS COMMANDBUTTON
      TOP=156
      LEFT=360
      HEIGHT=18
      WIDTH=59
      CAPTION="Delete"
      VISIBLE=.T.
      ENABLED=.F.
      PROCEDURE CLICK
         o=THISFORM.ListView1.SELECTEDITEM
         IF !ISNULL(o)
            THISFORM.ListView1.listitems.REMOVE(o.INDEX)
         ENDIF
      ENDPROC
   ENDDEFINE

   *** Define the Exit Button Class
   DEFINE CLASS ExButton AS COMMANDBUTTON
      TOP=226
      LEFT=192
      WIDTH=192
      HEIGHT=18
      WIDTH=59
      CAPTION="Exit"
      VISIBLE=.T.
      PROCEDURE CLICK
         THISFORM.RELEASE
         CLEAR EVENTS
      ENDPROC
   ENDDEFINE
				

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
166937Aggiunta a livello di programmazione di immagini a controllo ImageList
160921Errore di utilizzo dei controlli OLE
163803Impossibile impostare la proprietà ImageList di TreeView visivamente

Proprietà

Identificativo articolo: 170146 - Ultima modifica: lunedì 21 febbraio 2005 - Revisione: 2.4
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
Chiavi: 
kbmt kbcode kbhowto kboop KB170146 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 170146
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com