home *** CD-ROM | disk | FTP | other *** search
- 'Server - Control app
-
- RUN "StdArray"
-
- 'This procedure handles initiate requests
- PROC HandleInit(Session,Message, App, Topic)
- LOCAL NextApp
- IF App = "PCTech" THEN
- NextApp = FirstMatch(CurApps, 0)
- 'only allow maxapps apps to run at once
- IF NOT NextApp THEN
- IF DDENew(Session, App, Topic) THEN
- DDEControl(_Data, "Command", "TooMany")
- END IF
- ELSE
- IF DDENew(Session, App, Topic) THEN
- CurApps[NextApp] = Session
- FormSetColor(_Blue; _Text)
- FormModifyObject(100 + NextApp, _SetColor)
- DDESetProc(Controller)
- 'Set the title
- DDEControl(_Data, "Title", Sprint("Walker P(0)", NextApp))
- 'If only session, start the man walking
- IF Sum(CurApps <> 0) = 1 THEN
- StartWalk(NextApp)
- END IF
- END IF
- END IF
- END IF
- END PROC
-
- 'This handles messages sent from the other items
- PROC Controller(Session, Message, Topic, Data)
- LOCAL AppNum
- AppNum = FirstMatch(CurApps, Session)
- SELECT CASE Message
- CASE _Close
- FormSetColor(_Black; _Text)
- FormModifyObject(100 + AppNum, _SetColor)
- CurApps[AppNum] = 0
- IF Walker = AppNum THEN
- MoveWalker(AppNum)
- END IF
- CASE _Poke
- IF Topic = "Command" and Data = "ManOut" THEN
- FormSetColor(_Blue; _Text)
- FormModifyObject(100 + AppNum, _SetColor)
- MoveWalker(AppNum)
- END IF
- END SELECT
- END PROC
-
-
- PROC StartWalk(App)
- FormSetColor(_Red; _Text)
- FormModifyObject(100 + App, _SetColor)
- Walker = App
- DDESelect(CurApps[App])
- DDEControl(_Data, "Command", "StartWalk")
- END PROC
-
- PROC MoveWalker(App)
- LOCAL J, B
- B = CurApps <> 0 'All active apps
- 'Find next active
- J = FirstMatch(B, 1, App+1)
- IF NOT J THEN
- 'Search from front
- J = FirstMatch(B, 1)
- END IF
- IF J THEN 'switch to next walker
- DDESelect(CurApps[J])
- Walker = J
- DDEControl(_Data, "Command", "StartWalk")
- FormSetColor(_Red; _Text)
- FormModifyObject(100 + J, _SetColor)
- END IF
- END PROC
-
- PROC MakeForm
- FontNew(1; "Helv", 18, _Bold)
- FormNew(1; "Controller")
- FormControl(_Size; _Center, _Center, 100 pct, 100 pct)
- FormSetObject(101, _CaptionLeft, "1", 1, 10 pct, _Center)
- FormSetObject(102, _CaptionLeft, "2", 1, 35 pct, _Center)
- FormSetObject(103, _CaptionLeft, "3", 1, 60 pct, _Center)
- FormSetObject(104, _CaptionLeft, "4", 1, 85 pct, _Center)
- FormControl(_Show)
- FontControl(_Close)
- END PROC
-
- MaxApps = 4
- CurApps = Index(MaxApps)*0
- Walker = 0
-
- SetSys(_Size, {_Default, _Default, 50 pct, 30 pct})
- MakeForm
-
- DDESelect(-1)
- DDESetProc(HandleInit)