CREATE WINDOW Examples


Example 1:

 

*

 

 

.Define the WINDOWs, BUTTON and result variable

.

 

 

WINDOW1

WINDOW

 

WINDOW2

WINDOW

 

WINDOW3

WINDOW

 

BUTTON

BUTTON

 

RESULT

FORM

2

*

 

 

.Create the WINDOWs and Button

.

 

 

  

CREATE

WINDOW1=50:150:100:200,TITLE="Window 1"

  

CREATE

WINDOW2=170:270:225:425,TITLE="Window 2"

  

CREATE

WINDOW3=120:220:450:625,TITLE="Window 3"

.

 

 

  

CREATE

BUTTON=16:17:35:42,"Exit"

*

 

 

.Activate the WINDOWs and BUTTON

.

 

 

  

ACTIVATE

WINDOW1

  

ACTIVATE

WINDOW2

  

ACTIVATE

WINDOW3

.

 

 

  

ACTIVATE

BUTTON,EXIT,RESULT

*

 

 

.Wait for an Event to Occur

.

 

 

  

LOOP

 

  

  EVENTWAIT

 

  

REPEAT

 

*

 

 

.Exit Button Selected

.

 

 

EXIT

 

 

  

STOP

 

 

This example creates three WINDOWs and a BUTTON on the screen. When any of the windows are clicked, it becomes the active window. When the quit BUTTON is clicked, the program is terminated.

 

Example 2:

 

  

INCLUDE

PLBEQU.INC

  

INCLUDE

PLBMETH.INC

*

 

 

.Define the objects and variables

.

 

 

MAXWINS

CONST

"5"

PARENT

WINDOW

 

CHILD

WINDOW

(MAXWINS)

OBJECTIDS

INTEGER

1(MAXWINS)

ETEXT

EDITTEXT

(MAXWINS)

TOOL1

TOOLBAR

 

MENU

MENU

(4)

.

 

 

RESULT

FORM

9

TEXT

DIM

32767

STRING

DIM

1024

FITEM

INIT

"&File;&New;&Open...;-;E&xit"

EITEM

INIT

"&Edit;Cu&t;&Copy;&Paste"

WITEM

INIT

"&Window;Cascade;Tile &Vertical;Tile &Horizontal"

HITEM

INIT

"&Help;&About"

ZERO

FORM

"0"

NAME

DIM

100

PATH

DIM

100

FNAME

DIM

200

SEQ

FORM

"-1"

NL

INIT

0x7F

HEIGHT

FORM

7

WIDTH

FORM

7

INDEX

INTEGER

1

WININDEX

FORM

1

WINDOWS

FORM

1(MAXWINS)

.

 

 

FILE

FILE

 

*........................................................................

.Hide the main window

.

 

 

 

WINHIDE

 

*

 

 

.Create the Parent Window

.

 

 

  

CREATE

PARENT=100:450:100:500:

  

  

TITLE="Notes",WINTYPE=$MDICLIENT:

  

  

BGCOLOR=$BTNFACE,MDIBORDER=$ON:

  

  

MDITOP=30,MDIHEIGHT=0,MDILEFT=10,MDIWIDTH=0

*

 

 

.Register the Parent Window Events

.

 

 

  

EVENTREGISTER

PARENT,$CLOSE,EXIT

*

 

 

.Add the Menus

.

 

 

  

CREATE

PARENT;MENU(1),FITEM

  

CREATE

PARENT;MENU(2),EITEM,MENU(1)

  

CREATE

PARENT;MENU(3),WITEM,MENU(2)

  

CREATE

PARENT;MENU(4),HITEM,MENU(3)

*

 

 

.Create the Toolbar

.

 

 

  

CREATE

PARENT;TOOL1=55:80:10:390,SHOWTIPS=$ON:

  

  

APPEARANCE=$3D,DOCK=$WINDOCKTOP

.

 

 

  

TOOL1.ADDBUTTON

USING *IMAGEINDEX=1,*Tooltip="New",*Tag=1

  

TOOL1.ADDBUTTON

USING *IMAGEINDEX=2,*Tooltip="Open",*Tag=2

  

TOOL1.ADDBUTTON

USING *BtnStyle=$TBSTYLESEP

  

TOOL1.ADDBUTTON

USING *IMAGEINDEX=4,*Tooltip="Cut",*Tag=3

  

TOOL1.ADDBUTTON

USING *IMAGEINDEX=5,*Tooltip="Copy",*Tag=4

  

TOOL1.ADDBUTTON

USING *IMAGEINDEX=6,*Tooltip="Paste",*Tag=5

*

 

 

.Activate the objects

.

 

 

  

ACTIVATE

PARENT

  

EVENTREGISTER

PARENT,$CLOSE,EXIT

  

ACTIVATE

MENU(1),FILE,RESULT

  

ACTIVATE

MENU(2),EDIT,RESULT

  

ACTIVATE

MENU(3),WINDOW,RESULT

  

ACTIVATE

MENU(4)

  

ACTIVATE

TOOL1,TOOLCMD,RESULT

*

 

 

.Wait for an Event to Occur

.

 

 

  

LOOP

 

  

  EVENTWAIT

 

  

REPEAT

 

*........................................................................

.

 

 

.File Menu

 

 

.

 

 

FILE

 

 

  

BRANCH

RESULT TO NEW,OPEN

  

STOP

 

*

 

 

.Edit Menu

.

 

 

EDIT

 

 

  

BRANCH

RESULT TO CUT,COPY,PASTE

  

STOP

 

*

 

 

.Window Menu

.

 

 

WINDOW

 

 

  

BRANCH

RESULT TO CASCADE,TILEVERT,TILEHORZ

  

STOP

 

*

 

 

.Toolbar Button Clicked

.

 

 

TOOLCMD

 

 

  

BRANCH

RESULT TO NEW,OPEN,CUT,COPY,PASTE

  

RETURN

 

*.........................................................................

.

 

 

.New Function

 

 

.

 

 

NEW

 

 

  

CALL

OPENCHILD USING "1"

  

RETURN

 

*..........................................................................

.

 

 

.Open Function

.

 

 

OPEN

 

 

  

CALL

OPENCHILD USING "0"

  

RETURN

 

*..........................................................................

.

 

 

.Common open child window routine

.

 

 

. Enter with: 0 = Open Requested

. 1 = New Requested

.

 

 

OPENCHILD

ROUTINE

INDEX

.

 

 

.Locate an unused entry

.

 

 

  

FOR

WININDEX FROM "1" TO MAXWINS

  

BREAK

IF (OBJECTIDS(WININDEX) = 0)

  

REPEAT

 

*

 

 

.Check for maximum windows open

.

 

 

  

IF

(WININDEX = MAXWINS + 1)

  

ALERT

PARENT;CAUTION,"Maximum number of windows already open.":

  

  

 RESULT,"Error"

  

RETURN

 

  

ENDIF

 

*

 

 

.Flag the entry as in use

.

 

 

  

MOVE

WININDEX,OBJECTIDS(WININDEX)

*

 

 

.Conditional Open Logic

.

 

 

  

IF

(INDEX = 1) // New ?

  

CLEAR

TEXT // Start with a blank window

  

ELSE

            // Otherwise, select file and open

*

 

 

.Select a File

.

 

 

  

GETFNAME

PARENT;OPEN,"Open",NAME,PATH,"PLS"

  

RETURN

IF OVER

  

 

 

*

 

 

.Load the file

.

 

 

  

PACK

FNAME WITH PATH,NAME

  

OPEN

FILE,FNAME,READ

.

 

 

  

CLEAR

TEXT

  

LOOP

 

  

READ

FILE,SEQ;STRING

  

WHILE

NOT OVER

.

 

 

  

APPEND

STRING,TEXT

  

APPEND

NL,TEXT

  

REPEAT

 

.

 

 

  

CLOSE

FILE

  

RESET

TEXT

.

 

 

  

ENDIF

// End of Open Logic

*

 

 

.Create the Child Window

.

 

 

  

CREATE

CHILD(WININDEX)=(WININDEX * 20):(230+(WININDEX * 20)):(WININDEX * 20):(320+(WININDEX * 20)):

  

  

PARENTWIN=PARENT,WINTYPE=$MDICHILD,TITLE=NAME,OBJECTID=WININDEX

*

 

 

.Register the Child Window Events

  

 

 

  

EVENTREGISTER

CHILD(WININDEX),$CLOSE,EXITC

.

EVENTREGISTER

CHILD(WININDEX),$RESIZE,RESIZEC

*

 

 

.Create the Edittext Field

.

 

 

  

CREATE

CHILD(WININDEX);ETEXT(WININDEX)=0:230:0:320:

  

  

 BORDER=$ON,MULTILINE,SCROLLBAR

  

SETITEM

ETEXT(WININDEX),0,TEXT

*

 

 

.Activate the child window objects

.

 

 

  

ACTIVATE

ETEXT(WININDEX)

  

ACTIVATE

CHILD(WININDEX)

  

SETFOCUS

CHILD(WININDEX)

  

SETFOCUS

ETEXT(WININDEX)

.

 

 

  

RETURN

 

*.............................................................

.

 

 

.Cut Function

.

 

 

CUT

 

 

  

PARENT.GetActiveMDIChild GIVING INDEX

  

GETITEM

ETEXT(INDEX),1,STRING

  

CLIPSET

STRING

  

SETITEM

ETEXT(INDEX),1,""

  

RETURN

 

*..............................................................

.

 

 

.Copy Function

.

 

 

COPY

 

 

  

PARENT.GetActiveMDIChild GIVING INDEX

  

GETITEM

ETEXT(INDEX),1,STRING

  

CLIPSET

STRING

  

RETURN

 

*..............................................................

.

 

 

.Paste Function

.

 

 

PASTE

 

 

  

PARENT.GetActiveMDIChild GIVING INDEX

  

CLIPGET

STRING

  

SETITEM

ETEXT(INDEX),1,STRING

  

RETURN

 

*..............................................................

.

 

 

.Cascade Function

.

 

 

CASCADE

 

 

  

PARENT.MDILayOut USING $Cascade

  

CALL

RESIZEALL

  

RETURN

 

*..............................................................

.

 

 

.Tile Horizontally

.

 

 

TILEHORZ

 

 

  

PARENT.MDILayOut USING $TileHorizontal

  

CALL

RESIZEALL

  

RETURN

 

*..............................................................

.

 

 

.Tile Vertically

.

 

 

TILEVERT

 

 

  

PARENT.MDILayOut USING $TileVertical

  

CALL

RESIZEALL

  

RETURN

 

*..............................................................

.

 

 

.Close a Child Window

.

 

 

EXITC

 

 

  

PARENT.GetActiveMDIChild GIVING INDEX

  

DESTROY

ETEXT(INDEX)

  

DESTROY

CHILD(INDEX)

  

MOVE

"0",OBJECTIDS(INDEX)

  

RETURN

 

*...............................................................

.

 

 

.Exit Requested

.

 

 

EXIT

 

 

 

STOP

 

*..............................................................

.

 

 

.Resize the parent

.

 

 

RESIZEP

 

 

  

GETPROP

PARENT,HEIGHT=HEIGHT

  

GETPROP

PARENT,WIDTH=WIDTH

  

SETPROP

PARENT,MDIHEIGHT=(HEIGHT - 60)

  

SETPROP

PARENT,MDIWIDTH=(WIDTH - 20)

  

RETURN

 

*..............................................................

.

 

 

.Resize a child

.

 

 

RESIZEC

 

 

  

PARENT.GetActiveMDIChild GIVING INDEX

  

GETPROP

CHILD(WININDEX),HEIGHT=HEIGHT

  

GETPROP

CHILD(WININDEX),WIDTH=WIDTH

  

SETPROP

ETEXT(WININDEX),HEIGHT=HEIGHT

  

SETPROP

ETEXT(WININDEX),WIDTH=WIDTH

  

RETURN

 

*..............................................................

.

 

 

.Resize all child windows

.

 

 

RESIZEALL

 

 

  

FOR

INDEX FROM "1" TO MAXWINS

  

IF

(OBJECTIDS(INDEX) > 0)

  

GETPROP

CHILD(INDEX),HEIGHT=HEIGHT

  

GETPROP

CHILD(INDEX),WIDTH=WIDTH

  

SETPROP

ETEXT(INDEX),HEIGHT=HEIGHT

  

SETPROP

ETEXT(INDEX),WIDTH=WIDTH

  

ENDIF

 

  

REPEAT

 

  

RETURN

 

 

This is an example of a MDI application. As each file is opened, a MDI child window is opened within the parent.

 



PL/B Language Reference CREATE VSCROLLBAR Example DEACTIVATE Example