*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="_therm.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * DEFINE CLASS _progressbar AS container *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Shape5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="shpThermBar" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblPercentage" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblPercentage2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="shape1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="shape2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape4" UniqueID="" Timestamp="" /> * *m: complete *m: reset && Property Description will appear here. *m: update *p: ibasis *p: ipercentage *p: iprogress * * Height = 17 ibasis = 0 ipercentage = 0 iprogress = 0 Name = "_progressbar" Width = 333 * ADD OBJECT 'lblPercentage' AS label WITH ; BackStyle = 0, ; Caption = "0%", ; FontName = "MS Sans Serif", ; FontSize = 8, ; Height = 13, ; Left = 159, ; Name = "lblPercentage", ; Top = 2, ; Width = 16 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblPercentage2' AS label WITH ; BackColor = 0,0,255, ; BackStyle = 0, ; Caption = "Label1", ; FontName = "MS Sans Serif", ; FontSize = 8, ; ForeColor = 255,255,255, ; Height = 13, ; Left = 159, ; Name = "lblPercentage2", ; Top = 2, ; Width = 0 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'shape1' AS shape WITH ; BorderColor = 128,128,128, ; Height = 16, ; Left = 0, ; Name = "shape1", ; Top = 0, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'shape2' AS shape WITH ; BorderColor = 128,128,128, ; Height = 1, ; Left = 0, ; Name = "shape2", ; Top = 0, ; Width = 332 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape3' AS shape WITH ; BorderColor = 255,255,255, ; Height = 1, ; Left = 0, ; Name = "Shape3", ; Top = 16, ; Width = 333 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape4' AS shape WITH ; BorderColor = 255,255,255, ; Height = 17, ; Left = 332, ; Name = "Shape4", ; Top = 0, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape5' AS shape WITH ; BackStyle = 0, ; BorderWidth = 0, ; FillColor = 192,192,192, ; FillStyle = 0, ; Height = 16, ; Left = 1, ; Name = "Shape5", ; Top = 1, ; Width = 332 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'shpThermBar' AS shape WITH ; BackColor = 128,128,128, ; BorderStyle = 0, ; FillColor = 128,128,128, ; FillStyle = 0, ; Height = 17, ; Left = 1, ; Name = "shpThermBar", ; Top = 1, ; Width = 0 *< END OBJECT: BaseClass="shape" /> PROCEDURE complete local iSeconds this.Update(iif(this.iBasis <> 0, this.iBasis, 100)) m.iSeconds=seconds() + .5 do while seconds() < m.iSeconds && wait half a sec enddo ENDPROC PROCEDURE Init DECLARE INTEGER GetSysColor IN Win32API INTEGER this.shpThermBar.FillColor = GetSysColor(13) &&COLOR HIGHLIGHT this.shape5.FillColor = this.parent.backcolor ENDPROC PROCEDURE reset && Property Description will appear here. Lparameters iBasis this.iBasis = iif(type('m.iBasis') = 'N', m.iBasis, 0) this.Update(0) ENDPROC PROCEDURE update * m.iProgress is the percentage complete, or, if this.iBasis * is non-zero, is used to calculate the percentage complete. Lparameters m.iProgress LOCAL iPercentage,iAvgCharWidth this.iProgress = max(0, m.iProgress) if !empty(this.iBasis) m.iPercentage = int(this.iProgress/this.iBasis*100) else m.iPercentage = this.iProgress endif m.iPercentage = min(100,max(0,m.iPercentage)) if m.iPercentage <> this.iPercentage if len(alltrim(str(m.iPercentage,3)))<>len(alltrim(str(this.iPercentage,3))) iAvgCharWidth=fontmetric(6,this.lblPercentage.FontName, ; this.lblPercentage.FontSize, ; iif(this.lblPercentage.FontBold,'B','')+ ; iif(this.lblPercentage.FontItalic,'I','')) this.lblPercentage.Width=txtwidth(alltrim(str(m.iPercentage,3)) + '%', ; this.lblPercentage.FontName,this.lblPercentage.FontSize, ; iif(this.lblPercentage.FontBold,'B','')+ ; iif(this.lblPercentage.FontItalic,'I','')) * iAvgCharWidth this.lblPercentage.Left=int((this.Shape5.Width - ; this.lblPercentage.Width) / 2)+this.shpThermBar.Left-1 this.lblPercentage2.Left=this.lblPercentage.Left endif this.iPercentage = m.iPercentage this.shpThermBar.Width = int((this.Shape5.Width)*this.iPercentage/100) this.lblPercentage.Caption = alltrim(str(m.iPercentage,3)) + '%' this.lblPercentage2.Caption = this.lblPercentage.Caption if this.shpThermBar.Left + this.shpThermBar.Width -1 >= ; this.lblPercentage2.Left if this.shpThermBar.Left + this.shpThermBar.Width - 1 >= ; this.lblPercentage2.Left + this.lblPercentage.Width - 1 this.lblPercentage2.Width = this.lblPercentage.Width else this.lblPercentage2.Width = ; this.shpThermBar.Left + this.shpThermBar.Width - ; this.lblPercentage2.Left - 1 endif else this.lblPercentage2.Width = 0 endif endif ENDPROC ENDDEFINE DEFINE CLASS _thermometer AS form *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Shape10" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape9" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape8" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblTitle" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblTask" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="shpThermBar" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblPercentage" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblPercentage2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape11" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape12" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape13" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape14" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblEscapeMessage" UniqueID="" Timestamp="" /> * *m: complete && Displays 100% complete thermometer. *m: update && Updates thermometer. Parameter iProgress, cTask. iProgress - percent to display, cTask - message to display. *p: ccurrenttask && Current task. *p: cthermref *p: ibasis && Basis for calculating percentage. *p: ipercentage && This is percentage complete to display *p: iprogress && This is amount complete. *p: shpthermbarmaxwidth * * AlwaysOnTop = .F. AutoCenter = .T. BorderStyle = 0 Caption = "" ccurrenttask = ('') Closable = .F. ControlBox = .F. cthermref = ('') DoCreate = .T. Height = 88 ibasis = (0) ipercentage = (0) iprogress = (0) MaxButton = .F. MinButton = .F. Movable = .F. Name = "_thermometer" ScaleMode = 3 shpthermbarmaxwidth = 322 Width = 356 * ADD OBJECT 'lblEscapeMessage' AS label WITH ; Alignment = 2, ; BackColor = 192,192,192, ; BackStyle = 0, ; Caption = "", ; FontBold = .F., ; FontCharSet = 238, ; FontName = "Arial", ; FontSize = 8, ; Height = 14, ; Left = 17, ; Name = "lblEscapeMessage", ; Top = 68, ; Width = 322, ; WordWrap = .F. *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblPercentage' AS label WITH ; BackStyle = 0, ; Caption = "0%", ; FontName = "MS Sans Serif", ; FontSize = 8, ; Height = 13, ; Left = 170, ; Name = "lblPercentage", ; Top = 47, ; Width = 16 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblPercentage2' AS label WITH ; BackColor = 0,0,255, ; BackStyle = 0, ; Caption = "Label1", ; FontName = "MS Sans Serif", ; FontSize = 8, ; ForeColor = 255,255,255, ; Height = 13, ; Left = 170, ; Name = "lblPercentage2", ; Top = 47, ; Width = 0 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblTask' AS label WITH ; BackColor = 192,192,192, ; BackStyle = 0, ; Caption = "", ; FontCharSet = 238, ; FontName = "Arial", ; FontSize = 8, ; Height = 16, ; Left = 18, ; Name = "lblTask", ; Top = 27, ; Width = 319, ; WordWrap = .F. *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblTitle' AS label WITH ; BackColor = 192,192,192, ; BackStyle = 0, ; Caption = "", ; FontCharSet = 238, ; FontName = "Arial", ; FontSize = 8, ; Height = 16, ; Left = 18, ; Name = "lblTitle", ; Top = 14, ; Width = 319, ; WordWrap = .F. *< END OBJECT: BaseClass="label" /> ADD OBJECT 'Shape1' AS shape WITH ; BackStyle = 0, ; Height = 88, ; Left = 0, ; Name = "Shape1", ; Top = 0, ; Width = 356 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape10' AS shape WITH ; BorderColor = 128,128,128, ; Height = 81, ; Left = 3, ; Name = "Shape10", ; Top = 3, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape11' AS shape WITH ; BorderColor = 128,128,128, ; Height = 1, ; Left = 16, ; Name = "Shape11", ; Top = 45, ; Width = 322 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape12' AS shape WITH ; BorderColor = 255,255,255, ; Height = 1, ; Left = 16, ; Name = "Shape12", ; Top = 61, ; Width = 323 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape13' AS shape WITH ; BorderColor = 128,128,128, ; Height = 16, ; Left = 16, ; Name = "Shape13", ; Top = 45, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape14' AS shape WITH ; BorderColor = 255,255,255, ; Height = 17, ; Left = 338, ; Name = "Shape14", ; Top = 45, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape2' AS shape WITH ; BorderColor = 255,255,255, ; Height = 1, ; Left = 1, ; Name = "Shape2", ; Top = 1, ; Width = 353 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape3' AS shape WITH ; BorderColor = 255,255,255, ; Height = 85, ; Left = 1, ; Name = "Shape3", ; Top = 1, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape4' AS shape WITH ; BorderColor = 128,128,128, ; Height = 1, ; Left = 1, ; Name = "Shape4", ; Top = 86, ; Width = 354 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape5' AS shape WITH ; BorderStyle = 0, ; FillColor = 192,192,192, ; FillStyle = 0, ; Height = 15, ; Left = 17, ; Name = "Shape5", ; Top = 47, ; Width = 322 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape6' AS shape WITH ; BorderColor = 128,128,128, ; Height = 86, ; Left = 354, ; Name = "Shape6", ; Top = 1, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape7' AS shape WITH ; BorderColor = 255,255,255, ; Height = 1, ; Left = 3, ; Name = "Shape7", ; Top = 84, ; Width = 350 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape8' AS shape WITH ; BorderColor = 255,255,255, ; Height = 82, ; Left = 352, ; Name = "Shape8", ; Top = 3, ; Width = 1 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape9' AS shape WITH ; BorderColor = 128,128,128, ; Height = 1, ; Left = 3, ; Name = "Shape9", ; Top = 3, ; Width = 349 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'shpThermBar' AS shape WITH ; BorderStyle = 0, ; FillColor = 128,128,128, ; FillStyle = 0, ; Height = 16, ; Left = 17, ; Name = "shpThermBar", ; Top = 46, ; Width = 0 *< END OBJECT: BaseClass="shape" /> PROCEDURE complete && Displays 100% complete thermometer. * This is the default complete message Lparameters m.cTask #define THERMCOMPLETE_LOC "Terminat." LOCAL iSeconds,cThermRef if PCOUNT() = 0 m.cTask = THERMCOMPLETE_LOC endif this.Update(iif(this.iBasis <> 0, this.iBasis, 100), m.cTask) m.iSeconds=seconds() + 1 do while seconds() < m.iSeconds *- wait a sec enddo if !empty(this.cThermRef) m.cThermRef = this.cThermRef &cThermRef = .NULL. release this endif ENDPROC PROCEDURE Init * m.cTitle is displayed on the first line of the window * m.iBasis is used to calculate the percentage complete * m.iInterval is the frequency used for updating the thermometer Lparameters cTitle, iBasis, iInterval this.shape5.fillcolor = this.backcolor && for Win95 compat this.lblTitle.Caption = iif(empty(m.cTitle),'',m.cTitle) this.iBasis = iif(empty(m.iBasis),0,m.iBasis) this.shpThermBar.FillColor = rgb(128,128,128) ENDPROC PROCEDURE update && Updates thermometer. Parameter iProgress, cTask. iProgress - percent to display, cTask - message to display. * m.iProgress is the percentage complete, or, if Init() was passed * an m.iBasis value, is used to calculate the percentage * m.cTask is displayed on the second line of the window Lparameters m.iProgress, m.cTask LOCAL iPercentage,iAvgCharWidth if parameters()<>0 .and. type('m.iProgress') = 'N' this.iProgress = max(0, m.iProgress) endif if PCOUNT() >= 2 .and. type('m.cTask') = 'C' * If we're specifically passed a null string, clear the current task, * otherwise leave it alone this.cCurrentTask = m.cTask endif if !empty(this.iBasis) m.iPercentage = int(this.iProgress/this.iBasis*100) else m.iPercentage = this.iProgress endif m.iPercentage = min(100,max(0,m.iPercentage)) if m.iPercentage <> this.iPercentage if len(alltrim(str(m.iPercentage,3)))<>len(alltrim(str(this.iPercentage,3))) iAvgCharWidth=fontmetric(6,this.lblPercentage.FontName, ; this.lblPercentage.FontSize, ; iif(this.lblPercentage.FontBold,'B','')+ ; iif(this.lblPercentage.FontItalic,'I','')) this.lblPercentage.Width=txtwidth(alltrim(str(m.iPercentage,3)) + '%', ; this.lblPercentage.FontName,this.lblPercentage.FontSize, ; iif(this.lblPercentage.FontBold,'B','')+ ; iif(this.lblPercentage.FontItalic,'I','')) * iAvgCharWidth this.lblPercentage.Left=int((this.shpThermBarMaxWidth- ; this.lblPercentage.Width) / 2)+this.shpThermBar.Left-1 this.lblPercentage2.Left=this.lblPercentage.Left endif this.iPercentage = m.iPercentage this.shpThermBar.Width = int((this.shpThermBarMaxWidth)*this.iPercentage/100) this.lblPercentage.Caption = alltrim(str(m.iPercentage,3)) + '%' this.lblPercentage2.Caption = this.lblPercentage.Caption if this.shpThermBar.Left + this.shpThermBar.Width -1 >= ; this.lblPercentage2.Left if this.shpThermBar.Left + this.shpThermBar.Width - 1 >= ; this.lblPercentage2.Left + this.lblPercentage.Width - 1 this.lblPercentage2.Width = this.lblPercentage.Width else this.lblPercentage2.Width = ; this.shpThermBar.Left + this.shpThermBar.Width - ; this.lblPercentage2.Left - 1 endif else this.lblPercentage2.Width = 0 endif endif if ! this.lblTask.Caption == this.cCurrentTask this.lblTask.Caption = this.cCurrentTask endif ENDPROC ENDDEFINE