*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="resizer.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS resizer AS control
*< CLASSDATA: Baseclass="control" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="Label1" UniqueID="" Timestamp="" />
*
*m: onresize
*p: nlastheight
*p: nlastwidth
*
*
BackStyle = 0
BorderWidth = 0
Comment = "*:OnResize=RB"
Height = 14
Name = "resizer"
nlastheight = 0
nlastwidth = 0
Width = 14
*
ADD OBJECT 'Label1' AS label WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
Caption = "o", ;
FontName = "Marlett", ;
Height = 14, ;
Left = 0, ;
Name = "Label1", ;
Top = 0, ;
Width = 14
*< END OBJECT: BaseClass="label" />
PROCEDURE Init
*
* Save the original form size
*
THIS.nLastHeight = ThisForm.Height
THIS.nLastWidth = ThisForm.Width
IF ThisForm.MinHeight = -1
*
* Make the design height the minimum if not otherwise specified
*
ThisForm.MinHeight = ThisForm.Height
ENDIF
IF ThisForm.MinWidth = -1
*
* Make the design width the minimum if not otherwise specified
*
ThisForm.MinWidth = ThisForm.Width
ENDIF
*
* Move this control to the right bottom of the form
*
THIS.Top = ThisForm.Height - THIS.Height + 2
THIS.Left = ThisForm.Width - This.Width + 2
*
* Make sure the border style is resizable
*
ThisForm.BorderStyle = 3
ENDPROC
PROCEDURE onresize
*
* Call this method from the Form.Resize event
*
LOCAL ARRAY laObjects[1]
LOCAL lnCount,lnI, loObject, lnDeltaHeight, lnDeltaWidth
LOCAL lcOnResize, lcHeight, lcWidth, lnAtPos
*
* Lock the screen
*
ThisForm.LockScreen = .T.
*
* Calculate the change in height since the last resize
*
lnDeltaHeight = ThisForm.Height - THIS.nLastHeight
lnDeltaWidth = ThisForm.Width - THIS.nLastWidth
*
* Build an array of objects
*
lnCount = Obj2Arr(@laObjects, ThisForm)
FOR lnI = 1 TO lnCount
*
* Get the object
*
loObject = laObjects[lnI]
IF TYPE('loObject.Comment') <> 'C'
*
* No comment property, skip control
LOOP
ENDIF
lnAtPos = ATCC('*:OnResize=', loObject.Comment)
IF lnAtPos = 0
*
* No On resize specified, skip control
*
LOOP
ENDIF
*
* Determine the actions to be preformed
*
lcOnResize = UPPER(PADR(SUBSTR(loObject.Comment, lnAtPos + 11), 2))
lcHeight = RIGHT(lcOnResize, 1)
lcWidth = LEFT(lcOnResize, 1)
*
* Chanhe the Height/Top of needed
DO CASE
CASE lcHeight = 'C'
*
* Center verticaly
*
loObject.Top = loObject.Top + ROUND(lnDeltaHeight / 2, 0)
CASE lcHeight = 'B'
*
* Align with bottom
*
loObject.Top = loObject.Top + lnDeltaHeight
CASE lcHeight = 'S'
*
* Resize object vertically
*
loObject.Height = loObject.Height + lnDeltaHeight
ENDCASE
DO CASE
CASE lcWidth = 'C'
*
* Center horizontally
*
loObject.Left = loObject.Left + ROUND(lnDeltaWidth / 2, 0)
CASE lcWidth = 'R'
*
* Align to right site
*
loObject.Left = loObject.Left + lnDeltaWidth
CASE lcWidth = 'S'
*
* Size object horizontally
*
loObject.Width = loObject.Width + lnDeltaWidth
ENDCASE
ENDFOR
*
* Remember the current form size
*
THIS.nLastHeight = ThisForm.Height
THIS.nLastWidth = ThisForm.Width
*
* Unlock the form to show changes
*
ThisForm.LockScreen = .F.
ENDPROC
ENDDEFINE