home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pctchnqs / 1991 / number6 / pctctrl.rlz < prev    next >
Text File  |  1991-12-16  |  3KB  |  101 lines

  1. 'Server - Control app
  2.  
  3. RUN "StdArray"
  4.  
  5. 'This procedure handles initiate requests
  6. PROC HandleInit(Session,Message, App, Topic)
  7.   LOCAL NextApp
  8.   IF App = "PCTech" THEN
  9.     NextApp = FirstMatch(CurApps, 0)
  10.     'only allow maxapps apps to run at once
  11.     IF NOT NextApp THEN
  12.       IF DDENew(Session, App, Topic) THEN
  13.         DDEControl(_Data, "Command", "TooMany")
  14.       END IF
  15.     ELSE
  16.       IF DDENew(Session, App, Topic) THEN
  17.         CurApps[NextApp] = Session
  18.         FormSetColor(_Blue; _Text)
  19.         FormModifyObject(100 + NextApp, _SetColor)
  20.         DDESetProc(Controller)
  21.         'Set the title
  22.         DDEControl(_Data, "Title", Sprint("Walker P(0)", NextApp))
  23.         'If only session, start the man walking
  24.         IF Sum(CurApps <> 0) = 1 THEN
  25.           StartWalk(NextApp)
  26.         END IF
  27.       END IF
  28.     END IF
  29.   END IF
  30. END PROC
  31.  
  32. 'This handles messages sent from the other items
  33. PROC Controller(Session, Message, Topic, Data)
  34.   LOCAL AppNum
  35.   AppNum = FirstMatch(CurApps, Session)
  36.   SELECT CASE Message
  37.   CASE _Close
  38.     FormSetColor(_Black; _Text)
  39.     FormModifyObject(100 + AppNum, _SetColor)
  40.     CurApps[AppNum] = 0
  41.     IF Walker = AppNum THEN
  42.       MoveWalker(AppNum)
  43.     END IF
  44.   CASE _Poke
  45.     IF Topic = "Command" and Data = "ManOut" THEN
  46.       FormSetColor(_Blue; _Text)
  47.       FormModifyObject(100 + AppNum, _SetColor)
  48.       MoveWalker(AppNum)
  49.     END IF
  50.   END SELECT
  51. END PROC
  52.  
  53.  
  54. PROC StartWalk(App)
  55.   FormSetColor(_Red; _Text)
  56.   FormModifyObject(100 + App, _SetColor)
  57.   Walker = App
  58.   DDESelect(CurApps[App])
  59.   DDEControl(_Data, "Command", "StartWalk")
  60. END PROC
  61.  
  62. PROC MoveWalker(App)
  63.   LOCAL J, B
  64.   B = CurApps <> 0    'All active apps
  65.   'Find next active
  66.   J = FirstMatch(B, 1, App+1)
  67.   IF NOT J THEN
  68.     'Search from front
  69.     J = FirstMatch(B, 1)
  70.   END IF
  71.   IF J THEN    'switch to next walker
  72.     DDESelect(CurApps[J])
  73.     Walker = J
  74.     DDEControl(_Data, "Command", "StartWalk")
  75.     FormSetColor(_Red; _Text)
  76.     FormModifyObject(100 + J, _SetColor)
  77.   END IF
  78. END PROC
  79.  
  80. PROC MakeForm
  81.   FontNew(1; "Helv", 18, _Bold)
  82.   FormNew(1; "Controller")
  83.   FormControl(_Size; _Center, _Center, 100 pct, 100 pct)
  84.   FormSetObject(101, _CaptionLeft, "1", 1, 10 pct, _Center)
  85.   FormSetObject(102, _CaptionLeft, "2", 1, 35 pct, _Center)
  86.   FormSetObject(103, _CaptionLeft, "3", 1, 60 pct, _Center)
  87.   FormSetObject(104, _CaptionLeft, "4", 1, 85 pct, _Center)
  88.   FormControl(_Show)
  89.   FontControl(_Close)
  90. END PROC
  91.  
  92. MaxApps = 4
  93. CurApps = Index(MaxApps)*0
  94. Walker = 0
  95.  
  96. SetSys(_Size, {_Default, _Default, 50 pct, 30 pct})
  97. MakeForm
  98.  
  99. DDESelect(-1)
  100. DDESetProc(HandleInit)
  101.