Article ID: 197510
Article Last Modified on 6/1/2006
* This program creates a number of forms that each
* add a pageframe at run-time. Each page activates
* after the pageframe is instantiated. The number of forms,
* pages in the pageframe, and text boxes on each page
* are set from the #DEFINE statements. The times in seconds for
* each form to add its objects, and activate each page
* are echoed to the Debug Output window. The total time in
* seconds for all forms is echoed last.
#DEFINE NO_OF_FORMS 10
#DEFINE NO_OF_PAGES 20
#DEFINE NO_OF_TEXTBOXES 10
DEBUG
DEBUGOUT ''
PUBLIC gnStart
gnStart = SECONDS()
FOR lni = 1 TO NO_OF_FORMS
lcfrmName = 'oform'+ALLTR(STR(lni))
&lcfrmName = CREATEOBJECT('perfform')
&lcfrmName..CAPTION = SUBSTR(lcfrmName,2)
&lcfrmName..SHOW()
ENDFOR
FOR lnj = 1 TO _SCREEN.FORMCOUNT
lcfrmName = 'oform'+ALLTR(STR(lnj))
&lcfrmName..SHOW()
lnstart = SECONDS()
FOR lnk = 1 TO &lcfrmName..pf1.PAGECOUNT
&lcfrmName..pf1.ACTIVEPAGE = lnk
ENDFOR
DEBUGOUT 'Form '+ ALLTR(STR(lnj)) + ;
': '+alltr(str(SECONDS() - lnstart,5,2))
ENDFOR
DEBUGOUT 'All forms: '+alltr(str(SECONDS() - gnStart,5,2))
READ EVENTS
DEFINE CLASS perfform AS FORM
HEIGHT = 350
ADD OBJECT pf1 AS PAGEFRAME WITH ;
PAGECOUNT = 0
PROC pf1.INIT()
THIS.HEIGHT = THIS.PARENT.HEIGHT - 5
FOR lnj = 1 TO NO_OF_PAGES
THIS.ADDOBJECT('pg'+ALLTR(STR(lnj)), 'pg')
ENDFOR
ENDPROC
ENDDEFINE
DEFINE CLASS pg AS PAGE
PROC ACTIVATE()
IF TYPE('this.cntPage') # 'O'
THIS.ADDOBJECT("cntPage", "cnPageContainer")
ENDIF
ENDPROC
ENDDEFINE
DEFINE CLASS cnpagecontainer AS CONTAINER
NAME = "cnpagecontainer"
VISIBLE = .T.
Top = 5
ADD OBJECT cmd1 AS COMMANDBUTTON WITH ;
LEFT = 180, ;
TOP = 20, ;
CAPTION = 'Quit', ;
VISIBLE = .T.
PROC INIT()
THIS.HEIGHT = THIS.PARENT.PARENT.HEIGHT - 20
THIS.WIDTH = THIS.PARENT.PARENT.WIDTH - 5
FOR lnp = 1 TO NO_OF_TEXTBOXES
THIS.ADDOBJECT('lbl'+ALLTR(STR(lnp)), 'label')
WITH THIS.CONTROLS(lnp+1)
.LEFT = 10
.TOP = 25*(lnp-1)+ 2
.WIDTH = 80
.NAME = 'lbl'+ALLTR(STR(lnp))
.VISIBLE = .T.
ENDWITH
ENDFOR
FOR lnq = lnp TO (2 * lnp) - 2
THIS.ADDOBJECT('txt'+ALLTR(STR(lnq)), 'textbox')
WITH THIS.CONTROLS(lnq+1)
.HEIGHT = 23
.LEFT = 90
.TOP = 25*(lnq-lnp)+ 2
.WIDTH = 80
.NAME = 'txt'+ALLTR(STR(lnq))
.VISIBLE = .T.
ENDWITH
ENDFOR
ENDPROC
PROC cmd1.CLICK
gnStart = SECONDS()
CLEAR EVENTS
ENDPROC
ENDDEFINE
Additional query words: kbVFP6QFE
Keywords: kbbug kbfix kbqfe kboop kbperfmon kbvs600sp3fix kbhotfixserver KB197510