Microsoft KB Archive/170146: Difference between revisions
m (Text replacement - "<" to "<") |
m (Text replacement - """ to """) |
||
(One intermediate revision by the same user not shown) | |||
Line 61: | Line 61: | ||
<br /> | <br /> | ||
'''Note''' The folders containing the icon and bitmap files have changed in Visual FoxPro 6.0. The new location for the icons is: | '''Note''' The folders containing the icon and bitmap files have changed in Visual FoxPro 6.0. The new location for the icons is: | ||
<pre class="fixed_text"> home(4)+ | <pre class="fixed_text"> home(4)+"icons\office\<filename>" | ||
</pre> | </pre> | ||
The new location for the bitmaps is: | The new location for the bitmaps is: | ||
<pre class="fixed_text"> home(4)+ | <pre class="fixed_text"> home(4)+"bitmaps\outline\<Filename>" | ||
</pre> | </pre> | ||
Following is the sample code for the first example to assign '''ImageList''' images to a '''TreeView''': | Following is the sample code for the first example to assign '''ImageList''' images to a '''TreeView''': | ||
<pre class="codesample"> LVForm=CREATEOBJECT( | <pre class="codesample"> LVForm=CREATEOBJECT("MyLVForm") | ||
LVForm.SHOW | LVForm.SHOW | ||
READ EVENT | READ EVENT | ||
Line 88: | Line 88: | ||
*** Define ImageList to Hold Images for the TreeView Control *** | *** Define ImageList to Hold Images for the TreeView Control *** | ||
DEFINE CLASS MyImageList AS OLECONTROL | DEFINE CLASS MyImageList AS OLECONTROL | ||
OLECLASS= | OLECLASS="COMCTL.ImageListCtrl.1" | ||
TOP=36 | TOP=36 | ||
LEFT=420 | LEFT=420 | ||
PROCEDURE INIT | PROCEDURE INIT | ||
THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home()+; | THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home()+; | ||
"samples\graphics\bmps\outline\closed.bmp")) | |||
THIS.OBJECT.ListImages.ADD(2,,LOADPICTURE(home()+; | THIS.OBJECT.ListImages.ADD(2,,LOADPICTURE(home()+; | ||
"samples\graphics\bmps\outline\open.bmp")) | |||
ENDPROC | ENDPROC | ||
ENDDEFINE | ENDDEFINE | ||
Line 101: | Line 101: | ||
*** Define the TreeView Control *** | *** Define the TreeView Control *** | ||
DEFINE CLASS MyTreeView AS OLECONTROL | DEFINE CLASS MyTreeView AS OLECONTROL | ||
OLECLASS= | OLECLASS="COMCTL.TreeCtrl.1" | ||
TOP=24 | TOP=24 | ||
HEIGHT=169 | HEIGHT=169 | ||
Line 139: | Line 139: | ||
HEIGHT=18 | HEIGHT=18 | ||
WIDTH=59 | WIDTH=59 | ||
CAPTION= | CAPTION="Add Node" | ||
VISIBLE=.T. | VISIBLE=.T. | ||
PROCEDURE CLICK | PROCEDURE CLICK | ||
mndxtxt= | mndxtxt="" | ||
mndxtxt=ALLTRIM(STR(THISFORM.mndx)) | mndxtxt=ALLTRIM(STR(THISFORM.mndx)) | ||
THISFORM.TreeView1.nodes.ADD(,2,mndxtxt+; | THISFORM.TreeView1.nodes.ADD(,2,mndxtxt+; | ||
"_",REPLICATE(mndxtxt,5),,0) | |||
THISFORM.mndx=THISFORM.mndx+1 | THISFORM.mndx=THISFORM.mndx+1 | ||
THISFORM.TreeView1.ENABLED=.T. | THISFORM.TreeView1.ENABLED=.T. | ||
Line 159: | Line 159: | ||
HEIGHT=18 | HEIGHT=18 | ||
WIDTH=59 | WIDTH=59 | ||
CAPTION= | CAPTION="Add Leaf" | ||
VISIBLE=.T. | VISIBLE=.T. | ||
ENABLED=.F. | ENABLED=.F. | ||
Line 166: | Line 166: | ||
IF !ISNULL(so) | IF !ISNULL(so) | ||
THISFORM.TreeView1.nodes.ADD(so.INDEX,; | THISFORM.TreeView1.nodes.ADD(so.INDEX,; | ||
4,, | 4,,"Sub"+ALLTRIM(so.TEXT),,0) | ||
so.IMAGE=1 | so.IMAGE=1 | ||
ENDIF | ENDIF | ||
Line 178: | Line 178: | ||
HEIGHT=18 | HEIGHT=18 | ||
WIDTH=59 | WIDTH=59 | ||
CAPTION= | CAPTION="Delete" | ||
VISIBLE=.T. | VISIBLE=.T. | ||
ENABLED=.F. | ENABLED=.F. | ||
Line 199: | Line 199: | ||
WIDTH=70 | WIDTH=70 | ||
HEIGHT=25 | HEIGHT=25 | ||
CAPTION= | CAPTION="Exit" | ||
VISIBLE=.T. | VISIBLE=.T. | ||
PROCEDURE CLICK | PROCEDURE CLICK | ||
Line 209: | Line 209: | ||
Following is the sample code for the Second example: | Following is the sample code for the Second example: | ||
LVForm=CREATEOBJECT( | LVForm=CREATEOBJECT("MYLVForm") | ||
LVForm.SHOW | LVForm.SHOW | ||
READ EVENT | READ EVENT | ||
Line 236: | Line 236: | ||
DEFINE CLASS MyImageList1 AS OLECONTROL | DEFINE CLASS MyImageList1 AS OLECONTROL | ||
OLECLASS= | OLECLASS="COMCTL.ImageListCtrl.1" | ||
TOP=204 | TOP=204 | ||
LEFT=420 | LEFT=420 | ||
PROCEDURE INIT | PROCEDURE INIT | ||
THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home(4)+; | THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home(4)+; | ||
"icons\office\folder01.ico")) | |||
ENDPROC | ENDPROC | ||
ENDDEFINE | ENDDEFINE | ||
Line 249: | Line 249: | ||
DEFINE CLASS MyImageList2 AS OLECONTROL | DEFINE CLASS MyImageList2 AS OLECONTROL | ||
OLECLASS= | OLECLASS="COMCTL.ImageListCtrl.1" | ||
TOP=264 | TOP=264 | ||
LEFT=420 | LEFT=420 | ||
PROCEDURE INIT | PROCEDURE INIT | ||
THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home(4)+; | THIS.OBJECT.ListImages.ADD(1,,LOADPICTURE(home(4)+; | ||
"bitmaps\outline\closed.bmp")) | |||
ENDPROC | ENDPROC | ||
ENDDEFINE | ENDDEFINE | ||
Line 260: | Line 260: | ||
*** Define the ListView Class *** | *** Define the ListView Class *** | ||
DEFINE CLASS MyListView AS OLECONTROL | DEFINE CLASS MyListView AS OLECONTROL | ||
OLECLASS= | OLECLASS="COMCTL.ListViewCtrl.1" | ||
TOP=24 | TOP=24 | ||
HEIGHT=169 | HEIGHT=169 | ||
Line 283: | Line 283: | ||
HEIGHT=18 | HEIGHT=18 | ||
WIDTH=59 | WIDTH=59 | ||
CAPTION= | CAPTION="Add Item" | ||
VISIBLE=.T. | VISIBLE=.T. | ||
PROCEDURE CLICK | PROCEDURE CLICK | ||
Line 289: | Line 289: | ||
THISFORM.lvitxt=ALLTRIM(STR(THISFORM.lvitm)) | THISFORM.lvitxt=ALLTRIM(STR(THISFORM.lvitm)) | ||
x=THISFORM.ListView1.OBJECT.listitems.ADD; | x=THISFORM.ListView1.OBJECT.listitems.ADD; | ||
(,THISFORM.lvitxt+ | (,THISFORM.lvitxt+"_","Item"+THISFORM.lvitxt,) | ||
x.smallicon=1 | x.smallicon=1 | ||
x.ICON=1 | x.ICON=1 | ||
Line 306: | Line 306: | ||
TOP = 80 | TOP = 80 | ||
WIDTH = 96 | WIDTH = 96 | ||
Option1.CAPTION = | Option1.CAPTION = "Large Icon" | ||
Option1.LEFT = 11 | Option1.LEFT = 11 | ||
Option1.TOP = 5 | Option1.TOP = 5 | ||
Option1.WIDTH = 82 | Option1.WIDTH = 82 | ||
Option1.NAME = | Option1.NAME = "Option1" | ||
Option2.CAPTION = | Option2.CAPTION = "Small Icon" | ||
Option2.LEFT = 11 | Option2.LEFT = 11 | ||
Option2.TOP = 20 | Option2.TOP = 20 | ||
Option2.WIDTH = 82 | Option2.WIDTH = 82 | ||
Option2.NAME = | Option2.NAME = "Option2" | ||
PROCEDURE INTERACTIVECHANGE | PROCEDURE INTERACTIVECHANGE | ||
DO CASE | DO CASE | ||
Line 332: | Line 332: | ||
HEIGHT=18 | HEIGHT=18 | ||
WIDTH=59 | WIDTH=59 | ||
CAPTION= | CAPTION="Delete" | ||
VISIBLE=.T. | VISIBLE=.T. | ||
ENABLED=.F. | ENABLED=.F. | ||
Line 350: | Line 350: | ||
HEIGHT=18 | HEIGHT=18 | ||
WIDTH=59 | WIDTH=59 | ||
CAPTION= | CAPTION="Exit" | ||
VISIBLE=.T. | VISIBLE=.T. | ||
PROCEDURE CLICK | PROCEDURE CLICK |
Latest revision as of 11:04, 21 July 2020
Article ID: 170146
Article Last Modified on 2/21/2005
APPLIES TO
- 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
This article was previously published under Q170146
SUMMARY
This article illustrates how images of an ImageList control can be accessed by TreeView and ListView controls programmatically.
MORE INFORMATION
This section has two code examples. The first example illustrates how ImageList images can be assigned to a TreeView control. In this example if Leaves are added to a Node of the TreeView, then a Closed Folder icon is assigned to the Node. If a node containing leaves is expanded, its icon changes to an Open Folder, and upon collapse, it changes back to the Closed Folder.
The second example shows how ImageList images can be assigned to a ListView control. In this example, when a List Item is created it is assigned a large icon. The item icons can then be toggled between a small and a large icon. For each type of icon--large and small--separate ImageList controls are used; otherwise, both types of icons appear as same size.
Note The folders containing the icon and bitmap files have changed in Visual FoxPro 6.0. The new location for the icons is:
home(4)+"icons\office\<filename>"
The new location for the bitmaps is:
home(4)+"bitmaps\outline\<Filename>"
Following is the sample code for the first example to assign ImageList images to a 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
REFERENCES
For additional information, click the following article numbers to view the articles in the Microsoft Knowledge Base:
166937 Programmatically adding images to ImageList control
160921 Error using OLE controls
163803 Cannot set ImageList property of Treeview visually
Keywords: kbhowto kboop kbcode KB170146