DEFINE WINDOW
Creates a
Window Definition
Standard Syntax (xBase
Style):
DEFINE WINDOW <WindowName>
AT <nRow> ,<nCol>
WIDTH <nWindth>
HEIGHT <nHeight>
[ VIRTUAL WIDTH <nVirtualWindth>
]
[ VIRTUAL HEIGHT <nVirtualHeight>
]
[ TITLE <cTitle> ]
[ ICON <cIconName> ]
[ MAIN | CHILD | MODAL | SPLITCHILD | PANEL ]
[ NOSHOW ]
[ TOPMOST ]
[ NOAUTORELEASE ]
[ NOMINIMIZE ]
[ NOMAXIMIZE ]
[ NOSIZE ]
[ NOSYSMENU ]
[ NOCAPTION ]
[ CURSOR <CursorName>
]
[ ON INIT <InitProcedureName>
| <bBlock> ]
[ ON RELEASE <ReleaseProcedureName>
| <bBlock> ]
[ ON INTERACTIVECLOSE <InteractiveCloseProcedureName>
| <bBlock> ]
[ ON MOUSECLICK <MouseClickProcedureName>
| <bBlock> ]
[ ON MOUSEDRAG <MouseDragProcedureName>
| <bBlock> ]
[ ON MOUSEMOVE <MouseMoveProcedureName>
| <bBlock> ]
[ ON SIZE <WindowSizeProcedureName>
| <bBlock> ]
[ ON MAXIMIZE <WindowMaximizeProcedureName>
| <bBlock> ]
[ ON MINIMIZE <WindowMinimizeProcedureName>
| <bBlock> ]
[ ON PAINT<WindowPaintProcedureName>
| <bBlock> ]
[ BACKCOLOR <anBackColor>
]
[ FONT <cFontName>
SIZE <nFontSize> ]
[ NOTIFYICON <cNotifyIconName>
]
[ NOTIFYTOOLTIP <cNotifyTooltip>
]
[ ON NOTIFYCLICK <NotifyClickProcedure>
| <bBlock> ]
[ ON GOTFOCUS <ProcedureName>
| <bBlock> ]
[ ON LOSTFOCUS <ProcedureName>
| <bBlock> ]
[ ON SCROLLUP <ProcedureName>
| <bBlock> ]
[ ON SCROLLDOWN <ProcedureName>
| <bBlock> ]
[ ON SCROLLLEFT <ProcedureName>
| <bBlock> ]
[ ON SCROLLRIGHT <ProcedureName>
| <bBlock> ]
[ ON HSCROLLBOX <ProcedureName>
| <bBlock> ]
[ ON VSCROLLBOX <ProcedureName>
| <bBlock> ]
[ HELPBUTTON ]
[ GRIPPERTEXT <cGripperText>
]
[ BREAK ]
[ FOCUSED ]
... Control Definitions...
END WINDOW
Alternate Syntax:
DEFINE WINDOW <WindowName>
ROW <nRow>
COL <nCol>
WIDTH <nWindth>
HEIGHT <nHeight>
WINDOWTYPE MAIN | CHILD | MODAL | SPLITCHILD | STANDARD | PANEL
[ VIRTUALWIDTH <nVirtualWindth>
]
[ VIRTUALHEIGHT <nVirtualHeight>
]
[ TITLE <cTitle> ]
[ ICON <cIconName> ]
[ VISIBLE <lValue> ]
[ TOPMOST [<lValue>] ]
[ AUTORELEASE <lValue>
]
[ MINBUTTON <lvalue> ]
[ MAXBUTTON <lValue> ]
[ SIZABLE <lValue> ]
[ SYSMENU <lValue> ]
[ TITLEBAR <lValue> ]
[ CURSOR <CursorName>
]
[ ONINIT <InitProcedureName>
| <bBlock> ]
[ ONRELEASE <ReleaseProcedureName>
| <bBlock> ]
[ ONINTERACTIVECLOSE <InteractiveCloseProcedureName>
| <bBlock> ]
[ ONMOUSECLICK <MouseClickProcedureName>
| <bBlock> ]
[ ONMOUSEDRAG <MouseDragProcedureName>
| <bBlock> ]
[ ONMOUSEMOVE <MouseMoveProcedureName>
| <bBlock> ]
[ ONSIZE <WindowSizeProcedureName>
| <bBlock> ]
[ ONMAXIMIZE <WindowMaximizeProcedureName>
| <bBlock> ]
[ ONMINIMIZE <WindowMinimizeProcedureName>
| <bBlock> ]
[ ONPAINT<WindowPaintProcedureName>
| <bBlock> ]
[ BACKCOLOR <anBackColor>
]
[ FONTNAME <cFontName>
FONTSIZE <nFontSize> ]
[ NOTIFYICON <cNotifyIconName>
]
[ NOTIFYTOOLTIP <cNotifyTooltip>
]
[ ONNOTIFYCLICK <NotifyClickProcedure>
| <bBlock> ]
[ ONGOTFOCUS <ProcedureName>
| <bBlock> ]
[ ONLOSTFOCUS <ProcedureName>
| <bBlock> ]
[ ONSCROLLUP <ProcedureName>
| <bBlock> ]
[ ONSCROLLDOWN <ProcedureName>
| <bBlock> ]
[ ONSCROLLLEFT <ProcedureName>
| <bBlock> ]
[ ONSCROLLRIGHT <ProcedureName>
| <bBlock> ]
[ ONHSCROLLBOX <ProcedureName>
| <bBlock> ]
[ ONVSCROLLBOX <ProcedureName>
| <bBlock> ]
[ HELPBUTTON <lValue>
]
[ GRIPPERTEXT <cGripperText>
]
[ BREAK lValue ]
[ FOCUSED <lValue> ]
... Control Definitions...
END WINDOW
Focused, Break and GripperText
properties are available only for 'SplitChild' type
windows.
Topmost property is not available for modal and splitchild type windows.
Properties:
- Row
- Col
- Width
- Height
- Title
- FocusedControl (R)
- Cursor
(W)
- VirtualWidth (D)
- VirtualHeight (D)
- Icon
(R)
- WindowType (D)
- Visible
(D)
- AutoRelease (D)
- MinButton (D)
- MaxButton (D)
- Sizable
(D)
- SysMenu (D)
- TitleBar (D)
- BackColor (D)
- FontName (D)
- FontSize (D)
- HelpButton (D)
- GripperText (D)
- Break
(D)
- Focused
(D)
- Topmost
(D)
- Name
(R)
(R) Read-Only (available after control definition via GetProperty
function or semi-oop syntax)
(W) Write-Only (available after control definition via SetProperty function or semi-oop
syntax)
(D) Available at definition only
Properties not tagged are available for read and write after control
definition via SetProperty and GetProperty
functions or semi-oop syntax.
Methods:
- Capture
- Print
- Show
- Hide
- Center
- Maximize
- Minimize
- Activate
- Restore
- Release
- SetFocus
- Redraw
Window Events:
-
OnInit
-
OnSize
-
OnPaint
New Properties:
ThisWindow|<FormName>.Handle
--> nFormHandle
ThisWindow|<FormName>.Index
--> nFormIndex
ThisWindow|<FormName>.IsMinimized
--> lBoolean
ThisWindow|<FormName>.IsMaximized
--> lBoolean
ThisWindow|<FormName>.ClientAreaWidth
--> nWidth
ThisWindow|<FormName>.ClientAreaHeight --> nHeight
ThisWindow|<FormName>.NoCaption
[ := | --> ] lBoolean
ThisWindow|<FormName>.NoMaximize [ := | --> ] lBoolean
ThisWindow|<FormName>.NoMinimize [ := | --> ] lBoolean
ThisWindow|<FormName>.NoClose
[ := | --> ] lBoolean
ThisWindow|<FormName>.NoSize
[ := | --> ] lBoolean
ThisWindow|<FormName>.NoSysMenu
[ := | --> ] lBoolean
ThisWindow|<FormName>.HScroll
[ := | --> ] lBoolean
ThisWindow|<FormName>.VScroll
[ := | --> ] lBoolean
ThisWindow|<FormName>.Enabled
[ := | --> ] lBoolean
ThisWindow|<FormName>.AlphaBlendTransparent :=
nAlphaBlend (0 to 255, Completely Transparent = 0,
Opaque = 255)
ThisWindow|<FormName>.BackColorTransparent :=
aRGBColor
ThisWindow|<FormName>.CenterWorkArea
ThisWindow|<FormName>.CenterIn
( FormName2 )
CENTER WINDOW <FormName> DESKTOP
CENTER WINDOW <FormName> IN <FormName2>
Visual Effects on Windows:
-
SET WINDOW FormName TRANSPARENT
TO COLOR aRGBColor
-
SET WINDOW FormName TRANSPARENT TO nAlphaBlend --> nAlphaBlend = 0 to 255 (completely transparent = 0, opaque
= 255)
-
SET WINDOW FormName [ TRANSPARENT ] TO OPAQUE
-
FLASH WINDOW FormName CAPTION
COUNT nTimes INTERVAL nMilliseconds
-
FLASH WINDOW FormName TASKBAR
COUNT nTimes INTERVAL nMilliseconds
-
FLASH WINDOW FormName [ ALL ] COUNT nTimes
INTERVAL nMilliseconds
-
ANIMATE WINDOW FormName INTERVAL
nMilliseconds MODE nFlags
-
ANIMATE WINDOW FormName MODE
nFlags
- MODE <nFlags>
(see the function AnimateWindow() in the API Window Reference), constants defined in i_Window.ch
#define AW_HOR_POSITIVE 0x00000001
#define AW_HOR_NEGATIVE 0x00000002
#define AW_VER_POSITIVE 0x00000004
#define AW_VER_NEGATIVE 0x00000008
#define
AW_CENTER 0x00000010
#define
AW_HIDE 0x00010000
#define AW_ACTIVATE
0x00020000
#define
AW_SLIDE 0x00040000
#define AW_BLEND
0x00080000
Tips:
· SplitChild windows can be defined as part of a splitbox only.
· Toolbar's & SplitBox's
parent window can't be a 'Virtual Dimensioned' window (use 'Virtual
Dimensioned' splitchild's instead)
· NoAutoRelease Style: When this style is used, windows are hide instead released from memory when the user clicks in
the close box.
· Using "Activate Window All" command at
program startup will force "NoAutoRelease"
style for all windows (excepting main).
· You must use "Show" and "Hide"
methods to make a window visible or invisible.
· For virtual dimensioned Windows, two predefined controls
are available.
· These controls are called vScrollBar
and hScrollBar.
· Value property (read only) is available for these
controls.
· ROW, COL, WIDTH and HEIGHT when any of those
parameters are optional and when not been informed, default value as follows:
§ ROW and/or COL: 0 (zero) position
§ WIDTH and/or HEIGHT: maximum size according real desktop sizes.
Source code example:
#include "hmg.ch"
Function Main
SET AUTOSCROLL ON
DEFINE WINDOW Form_Main ;
AT 0,0 ;
WIDTH
640 ;
HEIGHT 480 ;
VIRTUAL
WIDTH 1300 ;
VIRTUAL HEIGHT 800 ;
TITLE
'Virtual Dimensioned Window Demo' ;
MAIN
@ 100,10 BUTTON Button_1 ;
CAPTION 'Vert. ScrollBar
Value' ;
ACTION MsgInfo( Str ( Form_Main.VScrollBar.Value
) ) ;
WIDTH 150 HEIGHT 25
@ 200,10 BUTTON Button_2 ;
CAPTION 'Horiz. ScrollBar Value' ;
ACTION MsgInfo( Str ( Form_Main.HScrollBar.Value
) ) ;
WIDTH 150 HEIGHT 25
END WINDOW
ACTIVATE WINDOW Form_Main
Return Nil