Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
XY Quadrant Form Splitter
Message
From
21/11/2006 11:31:56
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01171347
Message ID:
01171471
Views:
10
Any critique? Too much dependant on object names is the first one I noticed.
PS: It's nice.
Cetin

>I needed something like the ISE GUI offers - a 4 quandrant form splitter - I couldn't find one - so I impovised one - it seems clean - an any critique appreciated:
* R6_PSA_Objects.PRG
>* November (c) 2006 Terry Thurber
>* All Rights Reserved
>CLOSE ALL
>CLEAR ALL
>SET EXACT ON
>PUBLIC myform as Form
>myform=CREATEOBJECT('frmSPlitter')
>myform.show
>
>********************************************************************
>*                     START SPLITTER FORM DEMO                     *
>********************************************************************
>DEFINE CLASS frmSplitter as Form &&=================================
>nPercentLeft=0
>nPercentTop=0
>lMoveInProgress=.f.
>
>PROCEDURE init
>WITH this
>.edtNE.zOrder(1)
>.edtNW.zOrder(1)
>.edtSE.zOrder(1)
>.edtSW.zOrder(1)
>.cmdX.zOrder(0)
>.cmdY.zOrder(0)
>.cmdXY.zOrder(0)
>.nPercentLeft=.50
>.nPercentTop=.50
>.resize
>ENDWITH
>ENDPROC
>
>PROCEDURE release
>this.queryunload
>ENDPROC
>
>PROCEDURE QueryUnload
>CLEAR EVENTS
>RELEASE ALL
>ENDPROC
>
>PROCEDURE resize
>WITH this
>PSA_MoveSplitter(this,.nPercentLeft*.width,.nPercentTop*.height)
>.cmdX.height=.height-4
>.cmdY.width=.width-4
>ENDWITH
>ENDPROC
>
>ADD OBJECT edtNE as edtBox
>edtNE.BackColor=15790335
>ADD OBJECT edtNW as edtBox
>edtNW.BackColor=16056304
>ADD OBJECT edtSE as edtBox
>edtSE.BackColor=15532031
>ADD OBJECT edtSW as edtBox
>edtSW.BackColor=16773874
>
>ADD OBJECT cmdX as cmdXClass
>ADD OBJECT cmdY as cmdYClass
>ADD OBJECT cmdXY as cmdXYClass
>
>Minheight=10
>caption=[XY Quadrant Form Splitter]
>visible =.t.
>ENDDEFINE && frmSplitter as Form &&=================================
>
>DEFINE CLASS edtBox as EditBox &&===================================
>visible=.t.
>left=2
>top=2
>ENDDEFINE && edtBox as EditBox &&===================================
>********************************************************************
>*                         END DEMO FORM CLASS                      *
>********************************************************************
>********************************************************************
>*                         START SCREEN SPLITTER                    *
>********************************************************************
>PROCEDURE PSA_MoveSplitter(oform,lnSplitterLeft,lnSplitterTop) &&---
>WITH oform
>.cmdX.Left=lnSplitterLeft
>.cmdY.Top=lnSplitterTop
>.cmdXY.Left=lnSplitterLeft
>.cmdXY.Top=lnSplitterTop
>* NE
>.edtNE.width=.cmdX.Left-2
>.edtNE.height=.cmdY.top-2
>* NW
>.edtNW.left=.cmdX.Left+2
>.edtNW.width=.width-.cmdX.Left-3
>.edtNW.height=.cmdY.top-2
>* SE
>.edtSE.top=.cmdY.top+2
>.edtSE.width=.cmdX.Left-2
>.edtSE.height=.height-.cmdY.top-3
>* NW
>.edtSW.top=.cmdY.top+2
>.edtSW.left=.cmdX.Left+2
>.edtSW.width=.width-.cmdX.Left-3
>.edtSW.height=.height-.cmdY.top-3
>ENDWITH
>ENDPROC &&PSA_MoveSplitter(oform,lnSplitterLeft,lnSplitterTop) &&---
>
>DEFINE CLASS cmdSplitterClass as CommandButton &&===================
>top=2
>left=2
>width=3
>height=3
>caption=[]
>style=1
>visible=.t.
>
>PROCEDURE MouseDown (nButton, nShift, nXCoord, nYCoord)
>thisform.lMoveInProgress=.t.
>ENDPROC &&MouseDown (nButton, nShift, nXCoord, nYCoord)
>
>PROCEDURE MouseMove (nButton, nShift, nXCoord, nYCoord)
>WITH this
>IF thisform.lMoveInProgress
>   IF [Y]$.name
>      nSplitterTop=nYCoord
>      IF nSplitterTop<4
>         nSplitterTop=4
>      ELSE
>      IF nSplitterTop>thisform.height-4
>         nSplitterTop=thisform.height-4
>      ENDIF
>      ENDIF
>      nSplitterLeft=thisform.cmdXY.left
>   ELSE
>   ENDIF
>   IF [X]$.name
>      nSplitterLeft=nXCoord
>      IF nSplitterLeft<4
>         nSplitterLeft=4
>      ELSE
>      IF nSplitterleft>thisform.width-4
>         nSplitterLeft=thisform.width-4
>      ENDIF
>      ENDIF
>      nSplitterTop=IIF([XY]$.name,nSplitterTop,thisform.cmdXY.top)
>   ELSE
>   ENDIF
>   PSA_MoveSplitter(thisform,nSplitterLeft,nSplitterTop)
>ELSE
>ENDIF &&thisform.lMoveInProgress
>ENDWITH
>ENDPROC
>
>PROCEDURE MouseUp (nButton, nShift, nXCoord, nYCoord)
>this.Mousepointer=0
>thisform.nPercentLeft=thisform.cmdXY.left/thisform.width
>thisform.nPercentTop=thisform.cmdXY.Top/thisform.height
>thisform.lMoveInProgress=.F.
>ENDPROC
>ENDDEFINE && cmdSplitterClass as CommandButton &&===================
>
>DEFINE CLASS cmdXClass as cmdSplitterClass && ======================
>PROCEDURE MouseMove (nButton, nShift, nXCoord, nYCoord)
>WITH this
>.mousepointer=IIF(nXCoord<.left-1 or nXCoord>.left+2,0,9)
>cmdSplitterClass::MouseMove (nButton, nShift, nXCoord, nYCoord)
>ENDWITH
>ENDPROC &&MouseMove (nButton, nShift, nXCoord, nYCoord)
>ENDDEFINE && cmdXClass as cmdSplitterClass && ======================
>
>DEFINE CLASS cmdYClass as cmdSplitterClass && ======================
>PROCEDURE MouseMove (nButton, nShift, nXCoord, nYCoord)
>WITH this
>.mousepointer=IIF(nYCoord<.top-1 or nYCoord>.top+2,0,7)
>cmdSplitterClass::MouseMove (nButton, nShift, nXCoord, nYCoord)
>ENDWITH
>ENDPROC &&MouseMove (nButton, nShift, nXCoord, nYCoord)
>ENDDEFINE && cmdYClass as cmdSplitterClass && ======================
>
>DEFINE CLASS cmdXYClass as cmdSplitterClass && =====================
>PROCEDURE MouseMove (nButton, nShift, nXCoord, nYCoord)
>WITH this
>.mousepointer=IIF(nYCoord<.top-1 OR nYCoord>.top+2 ;
>               OR nXCoord<.left-1 or nXCoord>.left+2,0,5)
>cmdSplitterClass::MouseMove (nButton, nShift, nXCoord, nYCoord)
>ENDWITH
>ENDPROC &&MouseMove (nButton, nShift, nXCoord, nYCoord)
>ENDDEFINE && cmdYClass as cmdSplitterClass && ======================
>********************************************************************
>*                      END SCREEN SPLITTER                         *
>********************************************************************
>
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform