189 lines
5.7 KiB
Plaintext
189 lines
5.7 KiB
Plaintext
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
|
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
*< FOXBIN2PRG: Version="1.21" SourceFile="autoresize.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
|
*
|
|
*
|
|
DEFINE CLASS autoresize AS container
|
|
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*p: firstrun && Internal
|
|
*p: resizeheight
|
|
*p: resizewidth
|
|
*</DefinedPropArrayMethod>
|
|
|
|
HIDDEN firstrun
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
BorderColor = 128,64,0
|
|
BorderWidth = 1
|
|
firstrun = .T.
|
|
Height = 20
|
|
Name = "autoresize"
|
|
resizeheight = (thisform.Height)
|
|
resizewidth = (thisform.Width)
|
|
ToolTipText = "Resizes controls on a form"
|
|
Visible = .F.
|
|
Width = 20
|
|
*</PropValue>
|
|
|
|
PROCEDURE Error
|
|
LPARAMETERS nError, cMethod, nLine
|
|
|
|
*--------------------------------------------
|
|
* Ignore all error from this class
|
|
*--------------------------------------------
|
|
RETURN
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Refresh
|
|
*------------------------------------------------------------
|
|
* Description: Auto Resize - resizes all control on form.
|
|
* Parameters: tObj, Object to resize, default = thisform
|
|
* Return: n/a
|
|
* Use: In the Forms Resize event place "thisform.Refresh()"
|
|
*------------------------------------------------------------
|
|
* Id Date By Description
|
|
* 1 01/07/2005 GLR Initial Creation v. 1.00.0001
|
|
* 2 01/11/2005 GLR Free up Tag by move Anchors to ResizeAnchors
|
|
* 3 01/12/2005 GLR Add option to center control Horz.
|
|
*
|
|
*------------------------------------------------------------
|
|
|
|
|
|
*!* Instructions
|
|
*!*
|
|
*!* 1. Place this control on your form
|
|
*!* 2. In each of the controls you wish to have auto resize, place in the
|
|
*!* TAG property a combination of follow letters.
|
|
*!*
|
|
*!* T : When the form's height grows, move control down.
|
|
*!* L : When the form's width grows, move control to the right
|
|
*!* H : When the form's height grows, make the control's height grow too
|
|
*!* W : When the form's width grows, make the control's width grow too
|
|
*!* C : Center the control horizonally.
|
|
*!*
|
|
*!* 3. Place in the Form's Resize event the statement
|
|
*!*
|
|
*!* THISFORM.Refresh()
|
|
*!*
|
|
*!* That is all there is to it.
|
|
|
|
|
|
LPARAMETERS tObj
|
|
|
|
IF VARTYPE(tObj) # "O"
|
|
tObj = THISFORM
|
|
ENDIF
|
|
IF TYPE("__Hdiff")="U" AND TYPE("_Wdiff")="U"
|
|
|
|
*--------------------------------------------
|
|
* Deactivate screen
|
|
*--------------------------------------------
|
|
Local __LS
|
|
__LS = thisform.LockScreen
|
|
thisform.LockScreen = .F.
|
|
|
|
PRIVATE __Hdiff, __Wdiff
|
|
|
|
*--------------------------------------------
|
|
* Perset these properties
|
|
*--------------------------------------------
|
|
IF EMPTY(THIS.ResizeHeight) OR EMPTY(THIS.ResizeWidth)
|
|
THIS.ResizeHeight = THISFORM.HEIGHT
|
|
THIS.ResizeWidth = THISFORM.WIDTH
|
|
ENDIF
|
|
|
|
*--------------------------------------------
|
|
* Determine how much has changed by resizing the form.
|
|
*--------------------------------------------
|
|
|
|
__Hdiff = THISFORM.HEIGHT-THIS.ResizeHeight
|
|
THIS.ResizeHeight = THISFORM.HEIGHT
|
|
__Wdiff = THISFORM.WIDTH-THIS.ResizeWidth
|
|
THIS.ResizeWidth = THISFORM.WIDTH
|
|
|
|
*--------------------------------------------
|
|
* If not resized, and not first time through, exit
|
|
*--------------------------------------------
|
|
IF __Hdiff=0 AND __Wdiff=0 AND (NOT THIS.FirstRun)
|
|
RETURN
|
|
ENDIF
|
|
THIS.FirstRun = .F.
|
|
|
|
ENDIF
|
|
|
|
|
|
WITH tObj
|
|
|
|
*--------------------------------------------
|
|
* Does the TAG property have Resize information
|
|
*--------------------------------------------
|
|
IF TYPE("tObj.Tag")="C" ;
|
|
AND (NOT EMPTY(.TAG) ) ;
|
|
AND LEN(ALLTRIM(CHRTRAN(.TAG,"TLHW","")))=0
|
|
|
|
*--------------------------------------------
|
|
* Free up the Tag property for the application
|
|
*--------------------------------------------
|
|
*!* tObj.ADDPROPERTY("ResizeAnchors", UPPER(.TAG))
|
|
*!* .Tag = ""
|
|
ENDIF
|
|
|
|
*--------------------------------------------
|
|
* Is there Anchors
|
|
*--------------------------------------------
|
|
*!* IF PEMSTATUS(tObj,"ResizeAnchors",5)
|
|
*!* LOCAL lcTLHW
|
|
*!* lcTLHW = .ResizeAnchors
|
|
IF PEMSTATUS(tObj,"Tag",5)
|
|
LOCAL lcTLHW
|
|
lcTLHW = .TAG
|
|
|
|
*--------------------------------------------
|
|
* Resize this control
|
|
*--------------------------------------------
|
|
.TOP = .TOP + IIF( "T"$lcTLHW, __Hdiff, 0 )
|
|
|
|
.LEFT = .LEFT + IIF( "L"$lcTLHW, __Wdiff, 0 )
|
|
|
|
.HEIGHT = .HEIGHT + IIF( "H"$lcTLHW, __Hdiff, 0 )
|
|
|
|
.WIDTH = .WIDTH + IIF( "W"$lcTLHW, __Wdiff, 0 )
|
|
|
|
*-- Center control horizonally
|
|
.LEFT = IIF( "C"$lcTLHW, (.PARENT.WIDTH - .WIDTH) / 2 , .LEFT )
|
|
|
|
ENDIF
|
|
|
|
*--------------------------------------------
|
|
* If this control has child controls, check them
|
|
*--------------------------------------------
|
|
IF TYPE("tObj.Objects[1]")="O"
|
|
|
|
FOR EACH lObj IN tObj.OBJECTS
|
|
|
|
THIS.REFRESH( lObj )
|
|
|
|
NEXT
|
|
|
|
ENDIF
|
|
|
|
ENDWITH
|
|
|
|
*--------------------------------------------
|
|
* Reactivate Screen
|
|
*--------------------------------------------
|
|
IF VARTYPE(__LS)="L"
|
|
thisform.LockScreen = __LS
|
|
ENDIF
|
|
|
|
RETURN
|
|
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|