Konu: Ornek
Visual Fox Pro
Public oForm
oForm = Createobject('form1')
oForm.Show()
Define Class form1 As Form
Top = 0
Left = 0
Height = 470
Width = 740
DoCreate = .T.
Caption = "HTML sample"
Name = "Form1"
HTMLFile='' && Custom prpoperty to hold temp .htm name
* This is IE control - you'd use webbrowser4 from gallery instead
* just because it already has some checks, extra pem. ie: wouldn't need readystate part
* for the sake of keeping code short here I directly use olecontrol itself
Add Object htmlviewer As OleControl With ;
Top = 12, ;
Left = 12, ;
Height = 396, ;
Width = 708, ;
Visible = .T., ;
Name = "HTMLViewer", ;
OleClass = 'Shell.Explorer'
Add Object text1 As TextBox With ;
Height = 25, ;
Left = 12, ;
Top = 432, ;
Width = 60, ;
Name = "Text1"
Add Object text2 As TextBox With ;
Height = 23, ;
Left = 84, ;
Top = 432, ;
Width = 204, ;
Name = "Text2"
Add Object text3 As TextBox With ;
Height = 23, ;
Left = 300, ;
Top = 432, ;
Width = 125, ;
Name = "Text3"
Add Object text4 As TextBox With ;
Height = 23, ;
Left = 432, ;
Top = 432, ;
Width = 125, ;
Name = "Text4"
Procedure Init
Local lnImages, lnPerrow, lnCurrent
lnImages = Adir(arrImages,_samples+'data\graphics\*.gif')
*You'd use a table let's simulate it
Create Cursor myImages (ImagePath m,FirstName c(12), LastName c(12))
For ix=1 To lnImages
Insert Into myImages Values ;
('myImages\'+arrImages[ix,1],'FirstName'+Trans(ix),'LastName'+Trans(ix))
Endfor
*Now we have a test table - create HTML
lnPerRow = 3 && How many would we show on a line
lnCurrent = 0 && Do not use recno() thinking it might be ordered on an index
This.HTMLFile = Sys(2015)+'.htm'
Set Textmerge On
Set Textmerge To (This.HTMLFile) Noshow
* Initialize lcHTML
\<HTML><BODY><TABLE>
Select myImages
Scan
lnCurrent = lnCurrent+1
If (lnCurrent-1)%lnPerRow=0
If lnCurrent>1
\</TR>
Endif
\<TR>
Endif
\<TD><A href="<<trans(recno())>>"><img border="0" src="<<trim(chrtran(ImagePath,'\','/'))>>"></A></TD>
Endscan
\</TR>
\</TABLE></BODY></HTML>
Set Textmerge To
Set Textmerge Off
*!* Modify Command (this.HTMLFile) && If you ever wonder created HTML
With Thisform.htmlviewer
.Navigate2('file://'+Sys(5)+Curdir()+This.HTMLFile)
Do While .ReadyState # 4 && Wait for ready state
Enddo
Endwith
Endproc
Procedure htmlviewer.BeforeNavigate2
*** ActiveX Control Event ***
Lparameters pdisp, url, flags, targetframename, postdata, headers, Cancel
Cancel = .T. && do not navigate to anywhere
With Thisform && with webbrowser4 also this.oHost is the form itself or container
.text1.Value = Justfname(url)
Go Val(Justfname(url)) In 'myImages'
.text2.Value = myImages.ImagePath
.text3.Value = myImages.FirstName
.text4.Value = myImages.LastName
Endwith
Endproc
Procedure Destroy
Erase (This.HTMLFile)
Endproc
Enddefine