Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
This.Parent.ContList.List1.RowSource = 'DoView'
This.Parent.ContList.List1.RowSourceType = 2
This.Parent.ContList.List1.Picture = Iif(! Empty(inv),'\GRAPHICS\ICONS\CHECKBOX_CHECKED.BMP','\GRAPHICS\ICONS\UnCHECKBOX_CHECKED.BMP')
SELECT DoView
lnRow = 1
this.Parent.ContList.List1.RowSourceType = 0
SCAN
this.Parent.ContList.List1.AddItem(Order_ID) && or whatever character field you want to display
this.Parent.ContList.List1.Picture(lnRow) = ;
IIF(! EMPTY(inv),'\GRAPHICS\ICONS\CHECKBOX_CHECKED.BMP','\GRAPHICS\ICONS\UnCHECKBOX_CHECKED.BMP')
lnRow = lnRow + 1
ENDSCAN
PUBLIC ofrm
DO GenPict
ofrm=CREATEOBJECT("MyForm")
ofrm.show()
DEFINE CLASS MyForm as Form
DIMENSION MyArray(1)
ADD OBJECT lst1 as Listbox WITH width=200,columncount=2,columnwidths='75,125'
PROCEDURE load
CREATE CURSOR Invoices (inv c(8),cust C(20))
LOCAL lni
FOR lni=1 TO 500
IF m.lni%7=0
APPEND BLANK
ELSE
INSERT INTO Invoices VALUES ('Inv '+TRANSFORM(m.lni),'Cust '+TRANSFORM(m.lni%5+1))
ENDIF
NEXT
ENDPROC
PROCEDURE Init
LOCAL lni
SELECT * FROM Invoices INTO ARRAY ThisForm.MyArray
This.lst1.RowSourceType=5
This.lst1.RowSource='ThisForm.MyArray'
FOR lni=1 TO This.lst1.ListCount
This.lst1.Picture[m.lni]=IIF(EMPTY(This.lst1.List[m.lni,1]),"uncheck.bmp","check.bmp")
NEXT
ENDPROC
PROCEDURE lst1.destroy
LOCAL lni
FOR lni=1 TO This.ListCount
IF FILE(This.Picture[m.lni])
ERASE (This.Picture[m.lni])
ENDIF
NEXT
ENDPROC
ENDDEFINE
PROCEDURE GenPict
LOCAL lcFile,oImage,oGr,oFillColor,oLineColor,oPen,oFontFam,oFont,oStringFormat,oBounds,oBrush,nHeight,nBkColor,nForeColor
nBkColor=RGB(255,255,255)
nForeColor=0
nHeight=14
lcFile="uncheck.bmp"
oImage = Newobject('Gpbitmap',Home(1)+'ffc/_gdiplus.vcx')
oImage.Create(m.nHeight,m.nHeight)
oGr = Newobject('GpGraphics',Home(1)+'ffc/_gdiplus.vcx')
oGr.CreateFromImage(oImage)
oFillColor = Newobject( 'GpColor',Home(1)+'ffc/_gdiplus.vcx','', nBkColor%256,FLOOR(nBkColor%(256*256)/(256)),FLOOR(nBkColor/(256*256)) )
oFillColor.set(nBkColor%256,FLOOR(nBkColor%(256*256)/(256)),FLOOR(nBkColor/(256*256)))
oGr.Clear(oFillColor)
oLineColor = Newobject( 'GpColor',Home(1)+'ffc/_gdiplus.vcx','', nForeColor,FLOOR(nForeColor%(256*256)/(256)),FLOOR(nForeColor/(256*256)) )
oPen = Newobject('GpPen', Home(1)+'ffc/_gdiplus.vcx' )
oPen.Create( m.oLineColor, 1 )
oGr.DrawRectangle(oPen, 2,2, m.nHeight-5,m.nHeight-5)
oImage.Savetofile( lcFile, "image/bmp")
lcFile="check.bmp"
oGr.DrawLine(oPen, 2,2, m.nHeight-4,m.nHeight-4)
oGr.DrawLine(oPen, m.nHeight-3,2,2,m.nHeight-3)
oImage.Savetofile( lcFile, "image/bmp")
RETURN lcFile
ENDPROC
It is very very slow.
It is around 18900+ records
I suggest you start by showing all the data - in a grid - but then give the user various options for filtering it. For example, you might let them filter by date of order (this month's orders, last month's orders, year-to-date, specific dates, etc); or by product, or value, or whatever makes sense in your application. And combine the filters so that they can use them in any combination.
PUBLIC ofrm
DO genpict
ofrm=CREATEOBJECT("MyForm")
ofrm.show()
DEFINE CLASS MyForm as Form
ADD OBJECT lst2 as Listbox WITH width=200,columncount=2,columnwidths='75,100'
PROCEDURE load
LOCAL lni
CREATE cursor cTmp (inv c(9),cust C(20))
FOR lni=1 TO 20000
IF lni%7<>0
INSERT INTO cTmp (inv,cust ) VALUES ('Inv '+TRANSFORM(m.lni),'Cust '+TRANSFORM(m.lni%5))
ELSE
APPEND BLANK
ENDIF
NEXT
GO TOP
PROCEDURE Init
LOCAL lni
This.lst2.Picture="check.bmp" && First I set the most frequent picture
SELECT cTmp
lni=0
SCAN
lni=m.lni+1
This.lst2.AddItem(inv)
This.lst2.LIST(This.lst2.NewIndex,2)=cust
If Empty(inv) && here I set only the less frequent picture
This.lst2.Picture[m.lni]="uncheck.bmp"
ENDIF
ENDSCAN
ENDPROC
PROCEDURE lst2.destroy
*!* LOCAL lni
*!* FOR lni=1 TO This.ListCount
*!* IF FILE(This.Picture[m.lni])
*!* ERASE (This.Picture[m.lni])
*!* ENDIF
*!* NEXT
IF FILE("check.bmp")
ERASE check.bmp
ENDIF
IF FILE("uncheck.bmp")
ERASE uncheck.bmp
ENDIF
ENDPROC
ENDDEFINE
PROCEDURE GenPict
LOCAL lcFile,oImage,oGr,oFillColor,oLineColor,oPen,nHeight,nBkColor,nForeColor
nBkColor=RGB(255,255,255)
nForeColor=0
nHeight=14
lcFile="uncheck.bmp"
oImage = Newobject('Gpbitmap',Home(1)+'ffc/_gdiplus.vcx')
oImage.Create(m.nHeight,m.nHeight)
oGr = Newobject('GpGraphics',Home(1)+'ffc/_gdiplus.vcx')
oGr.CreateFromImage(oImage)
oFillColor = Newobject( 'GpColor',Home(1)+'ffc/_gdiplus.vcx','', nBkColor%256,FLOOR(nBkColor%(256*256)/(256)),FLOOR(nBkColor/(256*256)) )
oFillColor.set(nBkColor%256,FLOOR(nBkColor%(256*256)/(256)),FLOOR(nBkColor/(256*256)))
oGr.Clear(oFillColor)
oLineColor = Newobject( 'GpColor',Home(1)+'ffc/_gdiplus.vcx','', nForeColor,FLOOR(nForeColor%(256*256)/(256)),FLOOR(nForeColor/(256*256)) )
oPen = Newobject('GpPen', Home(1)+'ffc/_gdiplus.vcx' )
oPen.Create( m.oLineColor, 1 )
oGr.DrawRectangle(oPen, 2,2, m.nHeight-5,m.nHeight-5)
oImage.Savetofile( lcFile, "image/bmp")
lcFile="check.bmp"
oGr.DrawLine(oPen, 2,2, m.nHeight-4,m.nHeight-4)
oGr.DrawLine(oPen, m.nHeight-3,2,2,m.nHeight-3)
oImage.Savetofile( lcFile, "image/bmp")
ENDPROC
PUBLIC ofrm
DO GenPict
ofrm=CREATEOBJECT("MyForm")
ofrm.show()
DEFINE CLASS MyForm as Form
ADD OBJECT lst1 as Listbox WITH width=200,columncount=2,columnwidths='75,125',RowSourceType=2,RowSource="Invoices"
************ The new property and procedures
lFirstPaint=.F.
PROCEDURE paint
IF !This.lFirstPaint
This.FirstPaint
This.lFirstPaint=.T.
ENDIF
ENDPROC
PROCEDURE FirstPaint
SELECT Invoices
SCAN
This.lst1.Picture[RECNO("Invoices")]=IIF(EMPTY(invoices.inv),"uncheck.bmp","check.bmp")
ENDSCAN
GO TOP
ENDPROC
*************
PROCEDURE load
CREATE CURSOR Invoices (inv c(8),cust C(20))
LOCAL lni
FOR lni=1 TO 500 && for 501 the first row show no picture, for 502 the first two rows and so on
IF m.lni%7=0
APPEND BLANK
ELSE
INSERT INTO Invoices VALUES ('Inv '+TRANSFORM(m.lni),'Cust '+TRANSFORM(m.lni%5+1))
ENDIF
NEXT
ENDPROC
PROCEDURE lst1.destroy
LOCAL lni
FOR lni=1 TO This.ListCount
IF FILE(This.Picture[m.lni])
ERASE (This.Picture[m.lni])
ENDIF
NEXT
ENDPROC
ENDDEFINE
PROCEDURE GenPict
LOCAL lcFile,oImage,oGr,oFillColor,oLineColor,oPen,oFontFam,oFont,oStringFormat,oBounds,oBrush,nHeight,nBkColor,nForeColor
nBkColor=RGB(255,255,255)
nForeColor=0
nHeight=14
lcFile="uncheck.bmp"
oImage = Newobject('Gpbitmap',Home(1)+'ffc/_gdiplus.vcx')
oImage.Create(m.nHeight,m.nHeight)
oGr = Newobject('GpGraphics',Home(1)+'ffc/_gdiplus.vcx')
oGr.CreateFromImage(oImage)
oFillColor = Newobject( 'GpColor',Home(1)+'ffc/_gdiplus.vcx','', nBkColor%256,FLOOR(nBkColor%(256*256)/(256)),FLOOR(nBkColor/(256*256)) )
oFillColor.set(nBkColor%256,FLOOR(nBkColor%(256*256)/(256)),FLOOR(nBkColor/(256*256)))
oGr.Clear(oFillColor)
oLineColor = Newobject( 'GpColor',Home(1)+'ffc/_gdiplus.vcx','', nForeColor,FLOOR(nForeColor%(256*256)/(256)),FLOOR(nForeColor/(256*256)) )
oPen = Newobject('GpPen', Home(1)+'ffc/_gdiplus.vcx' )
oPen.Create( m.oLineColor, 1 )
oGr.DrawRectangle(oPen, 2,2, m.nHeight-5,m.nHeight-5)
oImage.Savetofile( lcFile, "image/bmp")
lcFile="check.bmp"
oGr.DrawLine(oPen, 2,2, m.nHeight-4,m.nHeight-4)
oGr.DrawLine(oPen, m.nHeight-3,2,2,m.nHeight-3)
oImage.Savetofile( lcFile, "image/bmp")
RETURN lcFile
ENDPROC