(http://weblogs.foxite.com/vfpimaging/archive/2011/01/21/13664.aspx)
Autor: VFPIMAGING
Traducido por: Luis Maria Guayán
FoxyPreviewer.App es una colección de clases. En su interior hay varias clases, que se pueden acceder directamente usando VFP.
Recientemente he recibido el requerimiento de mostrar como podria utilizar el CTL32 ProgressBar directamente.
!Eso es realmente simple! El comando es
NEWOBJECT(), que nos permite acceder a las clases desde un archivo EXE o APP externo. En primer lugar el autor de esta joya, el CTL32 ProgressBar es Carlos Alloatti. Para obtener la información completa sobre cómo usarlo, por favor vaya directamente al sitio web de CTL32: www.ctl32.com
Uso:
=Dotherm(90, "Caption", "TitleBar") && Muestra la barra de progreso normal con el 90%
=DoTherm(-1, "Caption", "TitleBar") && El valor -1 en el primer parámetro muestra el efecto de marquesina
=DoTherm() && Desactiva la barra de progreso
Guardar el código de abajo como DOTHERM.PRG
* DOTHERM.PRG
* =DoTherm(90, "Texto label", "Titulo")
* =DoTherm(-1, "Teste2", "Titulo") && Continuo
* =DoTherm() && Desactiva
LPARAMETERS tnPercent, tcLabelText, tcTitleText
IF NOT PEMSTATUS(_SCREEN , "oThermForm", 5)
_SCREEN.ADDPROPERTY("oThermForm", "")
ENDIF
IF EMPTY(tnPercent)
TRY
_SCREEN.oThermForm.RELEASE()
CATCH
ENDTRY
_SCREEN.oThermForm = NULL
RETURN
ENDIF
IF TYPE("_Screen.oThermForm.Therm") <> "O"
DO CreateTherm
ENDIF
LOCAL loThermForm AS FORM
loThermForm = _SCREEN.oThermForm
IF NOT EMPTY(tcLabelText)
loThermForm.ThermLabel.CAPTION = tcLabelText
ENDIF
IF NOT EMPTY(tcTitleText)
loThermForm.CAPTION = tcTitleText
ENDIF
IF tnPercent = -1
loThermForm.Therm.Marquee = .T.
ELSE
IF loThermForm.Therm.Marquee = .T.
loThermForm.Therm.Marquee = .F.
ENDIF
loThermForm.Therm.VALUE = tnPercent
ENDIF
loThermForm.VISIBLE = .T.
RETURN
PROCEDURE CreateTherm
LOCAL loForm AS FORM
loForm = CREATEOBJECT("FORM")
_SCREEN.oThermForm = loForm
LOCAL lnBorder, liThermHeight, liThermWidth, liThermTop, liThermLeft
lnBorder = 7
WITH loForm AS FORM
.SCALEMODE = 3 && Pixels
.HEIGHT = 48
.HALFHEIGHTCAPTION = .T.
.WIDTH = 300
.AUTOCENTER = .T.
.BORDERSTYLE = 3 && Fixed dialog
.CONTROLBOX = .F.
.CLOSABLE = .F.
.MAXBUTTON = .F.
.MINBUTTON = .F.
.MOVABLE = .F.
.ALWAYSONTOP = .T.
.ALLOWOUTPUT = .F.
.NEWOBJECT("Therm","ctl32_progressbar", "PR_ctl32_progressbar.vcx", LOCFILE("FoxyPreviewer.app"))
.NEWOBJECT("ThermLabel", "Label")
.ThermLabel.VISIBLE = .T.
.ThermLabel.FONTBOLD = .T.
.ThermLabel.TOP = 4
.ThermLabel.WIDTH = .WIDTH - (lnBorder * 2)
.ThermLabel.ALIGNMENT = 2 && Center
liThermHeight = .HEIGHT - (lnBorder * 2) - .ThermLabel.HEIGHT
liThermWidth = .WIDTH - (lnBorder * 2)
.VISIBLE = .T.
ENDWITH
liThermTop = lnBorder + 20
liThermLeft = lnBorder
WITH loForm.Therm
.TOP = liThermTop
.LEFT = liThermLeft
.HEIGHT = liThermHeight
.WIDTH = liThermWidth
.MarqueeSpeed = 30
.MarqueeAnimationSpeed = 30
.VISIBLE = .T.
.CAPTION = ""
ENDWITH
ENDPROC
Gracias. mejorar el diseño.
ResponderBorrarBuenas tardes.
ResponderBorrarEl programa finaliza con un error en la siguiente linea
NEWOBJECT("Therm","ctl32_progressbar", "PR_ctl32_progressbar.vcx", LOCFILE("FoxyPreviewer.app"))
Me hace falta esos archivos?