Files
comun/clase/solution.vc2

572 lines
16 KiB
Plaintext

*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="solution.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS cmdclose AS commandbutton && Close button
*< CLASSDATA: Baseclass="commandbutton" Timestamp="" Scale="Pixels" Uniqueid="" />
*<PropValue>
Cancel = .T.
Caption = "Close"
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Name = "cmdclose"
Width = 72
*</PropValue>
PROCEDURE Click
IF TYPE("THISFORM.Parent") = "O"
THISFORMSET.Release
ELSE
THISFORM.Release
ENDIF
ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine
LOCAL lnChoice
#DEFINE CR CHR(13)
DO CASE
CASE nError = 1545 && Uncommitted changes
*------------------------------------
#DEFINE MSG1_LOC "Do you want to save your changes?"
#DEFINE MSG2_LOC "Uncommitted Changes"
lnChoice = MESSAGEBOX(MSG1_LOC, 4+48+0, MSG2_LOC)
DO CASE
CASE lnChoice = 6 && yes
=TABLEUPDATE(.T., .T.)
CASE lnChoice = 7 && no
=TABLEREVERT(.T.)
ENDCASE
OTHERWISE && Unanticipated error
*--------------------------------------
#DEFINE NUM_LOC "Error Number: "
#DEFINE PROG_LOC "Program: "
#DEFINE CAP_LOC "ERROR"
lcMsg = NUM_LOC + ALLTRIM(STR(nError)) + CR + CR + ;
MESSAGE()+ CR + CR + PROG_LOC + PROGRAM(1)
lnChoice = MESSAGEBOX(lcMsg, 2+48+512, CAP_LOC)
DO CASE
CASE lnChoice = 3 &&Abort
CANCEL
CASE lnChoice = 4 &&Retry
RETRY
CASE lnChoice = 5 &&Ignore
RETURN
ENDCASE
ENDCASE
ENDPROC
ENDDEFINE
DEFINE CLASS resizable AS custom
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod>
*m: addtoarray
*m: adjustcontrols && call from resize event of a form to adjust the placement and size of contained objects.
*m: loopthroughcontrols
*m: reset && Resets the Timer control so that it starts counting from 0.
*m: setposition
*m: setsize
*p: initialformheight
*p: initialformwidth
*p: initialresize && Is this the first time the controls are being adjusted?
*p: repositionlist
*p: resizelist
*a: acontrolstats[1,5]
*</DefinedPropArrayMethod>
PROTECTED acontrolstats,initialformheight,initialformwidth,initialresize
*<PropValue>
Height = 19
initialformheight = 0
initialformwidth = 0
initialresize = .T.
Name = "resizable"
repositionlist = Commandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner
resizelist = Commandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner
Width = 27
*</PropValue>
PROTECTED PROCEDURE addtoarray
LPARAMETERS oControl
nLen = ALEN(THIS.aControlStats,1)
THIS.aControlStats[nLen,1] = oControl.Top / THIS.InitialFormHeight
THIS.aControlStats[nLen,2] = oControl.Left / THIS.InitialFormWidth
THIS.aControlStats[nLen,3] = oControl.Height / THIS.InitialFormHeight
THIS.aControlStats[nLen,4] = oControl.Width / THIS.InitialFormWidth
THIS.aControlStats[nLen,5] = IIF(TYPE("oControl.FontSize") = 'U', 0, oControl.FontSize)
DIMENSION THIS.aControlStats[nLen+1, 5]
ENDPROC
PROCEDURE adjustcontrols && call from resize event of a form to adjust the placement and size of contained objects.
IF THIS.InitialResize
THIS.LoopThroughControls("INITIALIZE_AND_ADJUST")
THIS.InitialResize = .F.
ELSE
THIS.LoopThroughControls("ADJUST")
ENDIF
ENDPROC
PROCEDURE Init
THIS.InitialFormHeight = THISFORM.Height
THIS.InitialFormWidth = THISFORM.Width
ENDPROC
PROTECTED PROCEDURE loopthroughcontrols
LPARAMETERS cTask
* Valid parameters for cTask are 'Initialize_And_Adjust' and 'Adjust'
cTask = UPPER(cTask)
nOldDecimal = SET("DECIMAL")
SET DECIMAL TO 18
nPos = 0
THISFORM.LockScreen = .T.
FOR m.i = 1 TO THISFORM.ControlCount
oControl = THISFORM.Controls[m.i]
nPos = nPos + 1
If cTask = 'INITIALIZE_AND_ADJUST'
THIS.AddToArray(oControl)
ENDIF
IF oControl.Class$THIS.ResizeList
THIS.SetSize(oControl, nPos)
ENDIF
IF oControl.Class$THIS.RepositionList
THIS.SetPosition(oControl, nPos)
ENDIF
*A pageframe can contain only pages
IF THISFORM.Controls[m.i].Baseclass$"Pageframe"
*Loop through each page of the pageframe
FOR m.j = 1 TO THISFORM.Controls[m.i].PageCount
WITH THISFORM.Controls[m.i].pages[m.j]
*loop through all the controls on the page
FOR m.k = 1 TO .ControlCount
nPos = nPos + 1
IF cTask = 'INITIALIZE_AND_ADJUST'
THIS.AddToArray(.Controls[m.k])
ENDIF
IF oControl.Class$THIS.ResizeList
THIS.SetSize(oControl, nPos)
ENDIF
IF oControl.Class$THIS.RepositionList
THIS.SetPosition(oControl, nPos)
ENDIF
ENDFOR
ENDWITH
ENDFOR
ENDIF
ENDFOR
THISFORM.LockScreen = .F.
SET DECIMAL TO nOldDecimal
ENDPROC
PROCEDURE reset && Resets the Timer control so that it starts counting from 0.
* Call the reset method when you add a control to the form at runtime.
THIS.InitialResize = .T.
DIMENSION THIS.aControlStats[1,5]
THIS.InitialFormHeight = THISFORM.Height
THIS.InitialFormWidth = THISFORM.Width
ENDPROC
PROTECTED PROCEDURE setposition
LPARAMETERS oControl, nPos
oControl.Top = THISFORM.Height * THIS.aControlStats[nPos,1]
oControl.Left = THISFORM.Width * THIS.aControlStats[nPos,2]
ENDPROC
PROTECTED PROCEDURE setsize
LPARAMETERS oControl, nPos
oControl.Width = THISFORM.Width * THIS.aControlStats[nPos,4]
IF !oControl.Baseclass $ "Textbox Spinner"
oControl.Height = THISFORM.Height * THIS.aControlStats[nPos,3]
ENDIF
ENDPROC
ENDDEFINE
DEFINE CLASS resizable_class AS custom
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod>
*m: addtoarray
*m: adjustcontrols && call from resize event of a form to adjust the placement and size of contained objects.
*m: loopthroughcontrols
*m: reset && Resets the Timer control so that it starts counting from 0.
*m: setposition
*m: setsize
*p: initialformheight
*p: initialformwidth
*p: initialresize && Is this the first time the controls are being adjusted?
*p: repositionlist
*p: resizelist
*a: acontrolstats[1,5]
*</DefinedPropArrayMethod>
PROTECTED acontrolstats,initialformheight,initialformwidth,initialresize
*<PropValue>
Height = 19
initialformheight = 0
initialformwidth = 0
initialresize = .T.
Name = "resizable"
repositionlist = Commandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner
resizelist = Commandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner
Width = 27
*</PropValue>
PROTECTED PROCEDURE addtoarray
LPARAMETERS oControl
nLen = ALEN(THIS.aControlStats,1)
THIS.aControlStats[nLen,1] = oControl.Top / THIS.InitialFormHeight
THIS.aControlStats[nLen,2] = oControl.Left / THIS.InitialFormWidth
THIS.aControlStats[nLen,3] = oControl.Height / THIS.InitialFormHeight
THIS.aControlStats[nLen,4] = oControl.Width / THIS.InitialFormWidth
THIS.aControlStats[nLen,5] = IIF(TYPE("oControl.FontSize") = 'U', 0, oControl.FontSize)
DIMENSION THIS.aControlStats[nLen+1, 5]
ENDPROC
PROCEDURE adjustcontrols && call from resize event of a form to adjust the placement and size of contained objects.
IF THIS.InitialResize
THIS.LoopThroughControls("INITIALIZE_AND_ADJUST")
THIS.InitialResize = .F.
ELSE
THIS.LoopThroughControls("ADJUST")
ENDIF
ENDPROC
PROCEDURE Init
THIS.InitialFormHeight = THISFORM.Height
THIS.InitialFormWidth = THISFORM.Width
ENDPROC
PROTECTED PROCEDURE loopthroughcontrols
LPARAMETERS cTask
* Valid parameters for cTask are 'Initialize_And_Adjust' and 'Adjust'
cTask = UPPER(cTask)
nOldDecimal = SET("DECIMAL")
SET DECIMAL TO 18
nPos = 0
THISFORM.LockScreen = .T.
FOR m.i = 1 TO THISFORM.ControlCount
oControl = THISFORM.Controls[m.i]
nPos = nPos + 1
If cTask = 'INITIALIZE_AND_ADJUST'
THIS.AddToArray(oControl)
ENDIF
IF oControl.Class$THIS.ResizeList
THIS.SetSize(oControl, nPos)
ENDIF
IF oControl.Class$THIS.RepositionList
THIS.SetPosition(oControl, nPos)
ENDIF
*A pageframe can contain only pages
IF THISFORM.Controls[m.i].Baseclass$"Pageframe"
*Loop through each page of the pageframe
FOR m.j = 1 TO THISFORM.Controls[m.i].PageCount
WITH THISFORM.Controls[m.i].pages[m.j]
*loop through all the controls on the page
FOR m.k = 1 TO .ControlCount
nPos = nPos + 1
IF cTask = 'INITIALIZE_AND_ADJUST'
THIS.AddToArray(.Controls[m.k])
ENDIF
IF oControl.Class$THIS.ResizeList
THIS.SetSize(oControl, nPos)
ENDIF
IF oControl.Class$THIS.RepositionList
THIS.SetPosition(oControl, nPos)
ENDIF
ENDFOR
ENDWITH
ENDFOR
ENDIF
ENDFOR
THISFORM.LockScreen = .F.
SET DECIMAL TO nOldDecimal
ENDPROC
PROCEDURE reset && Resets the Timer control so that it starts counting from 0.
* Call the reset method when you add a control to the form at runtime.
THIS.InitialResize = .T.
DIMENSION THIS.aControlStats[1,5]
THIS.InitialFormHeight = THISFORM.Height
THIS.InitialFormWidth = THISFORM.Width
ENDPROC
PROTECTED PROCEDURE setposition
LPARAMETERS oControl, nPos
oControl.Top = THISFORM.Height * THIS.aControlStats[nPos,1]
oControl.Left = THISFORM.Width * THIS.aControlStats[nPos,2]
ENDPROC
PROTECTED PROCEDURE setsize
LPARAMETERS oControl, nPos
oControl.Width = THISFORM.Width * THIS.aControlStats[nPos,4]
IF !oControl.Baseclass $ "Textbox Spinner"
oControl.Height = THISFORM.Height * THIS.aControlStats[nPos,3]
ENDIF
ENDPROC
ENDDEFINE
DEFINE CLASS resizable_name AS resizable_class OF "solution.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "c:\program files\microsoft visual foxpro 8\foxpro.h"
*<PropValue>
Name = "resizable_name"
*</PropValue>
PROCEDURE loopthroughcontrols
LPARAMETERS cTask
* Valid parameters for cTask are 'Initialize_And_Adjust' and 'Adjust'
cTask = UPPER(cTask)
nOldDecimal = SET("DECIMAL")
SET DECIMAL TO 18
nPos = 0
THISFORM.LockScreen = .T.
FOR m.i = 1 TO THISFORM.ControlCount
oControl = THISFORM.Controls[m.i]
nPos = nPos + 1
If cTask = 'INITIALIZE_AND_ADJUST'
THIS.AddToArray(oControl)
ENDIF
IF oControl.Name$THIS.ResizeList
THIS.SetSize(oControl, nPos)
ENDIF
IF oControl.Name$THIS.RepositionList
THIS.SetPosition(oControl, nPos)
ENDIF
*A pageframe can contain only pages
IF THISFORM.Controls[m.i].Baseclass$"Pageframe"
*Loop through each page of the pageframe
FOR m.j = 1 TO THISFORM.Controls[m.i].PageCount
WITH THISFORM.Controls[m.i].pages[m.j]
*loop through all the controls on the page
FOR m.k = 1 TO .ControlCount
nPos = nPos + 1
IF cTask = 'INITIALIZE_AND_ADJUST'
THIS.AddToArray(.Controls[m.k])
ENDIF
IF oControl.Class$THIS.ResizeList
THIS.SetSize(oControl, nPos)
ENDIF
IF oControl.Class$THIS.RepositionList
THIS.SetPosition(oControl, nPos)
ENDIF
ENDFOR
ENDWITH
ENDFOR
ENDIF
ENDFOR
THISFORM.LockScreen = .F.
SET DECIMAL TO nOldDecimal
ENDPROC
ENDDEFINE
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="" />
*<DefinedPropArrayMethod>
*m: onresize
*p: nlastheight
*p: nlastwidth
*</DefinedPropArrayMethod>
*<PropValue>
BackStyle = 0
BorderWidth = 0
Comment = "*:OnResize=RB"
Height = 14
Name = "resizer"
nlastheight = 0
nlastwidth = 0
Width = 14
*</PropValue>
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