home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 02 / praxis / windemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-09-20  |  3.0 KB  |  110 lines

  1. (* --> 108 Zeilen *)
  2. (* ------------------------------------------------------ *)
  3. (*                    WINDEMO.PAS                         *)
  4. (*      Demonstrationsprogramm zur Unit WINDOW.PAS        *)
  5. (*    (c) 1988 by Christian Steingräber und TOOLBOX       *)
  6. (* ------------------------------------------------------ *)
  7. PROGRAM windemo;
  8.  
  9. USES Crt, Window;
  10.  
  11. CONST
  12.   gut_antwort: ARRAY [1..7] OF INTEGER =
  13.                (1, -27, -120, -121, -122, -35, -18);
  14.  
  15. VAR
  16.   i, j, tiefe, m_pos, x, y: BYTE;
  17.   auswahl                 : INTEGER;
  18.   status, not_done        : BOOLEAN;
  19.  
  20. FUNCTION ok(wert: INTEGER): BOOLEAN;
  21. BEGIN
  22.   ok := FALSE;
  23.   FOR i := 1 TO 7 DO
  24.     IF wert = gut_antwort[i] THEN ok := TRUE;
  25. END;
  26.  
  27. PROCEDURE pseudo(x, y: BYTE; VAR auswahl: INTEGER);
  28. VAR
  29.   m_pos : BYTE;
  30.   status: BOOLEAN;
  31. BEGIN
  32.   tiefe := tiefe + 1;
  33.   m_pos := 2;
  34.   status:= not_opened;
  35.   REPEAT
  36.     IF tiefe = 5 THEN
  37.       auswahl:= flipmenue(x, y, '#Zurück_)ESC_',
  38.                                         ver, status, m_pos)
  39.     ELSE
  40.       auswahl:= flipmenue(x,y,'#Zurück_Weiter#1_Weiter#2_'+
  41.                       'Weiter#3_)ESC_',ver, status, m_pos);
  42.     IF auswahl in[2, 3, 4] THEN BEGIN
  43.       IF x < 61 THEN x := x + 9 ELSE x := 70;
  44.       IF y+auswahl < 20 THEN y := y + auswahl ELSE y := 20;
  45.       pseudo(x, y, auswahl);
  46.       IF (auswahl=1) OR (auswahl = -27) THEN auswahl := 0;
  47.     END;
  48.   UNTIL ok(auswahl);
  49.   IF (auswahl = 1) OR (auswahl = -27) THEN auswahl := 0;
  50.   rmwindow;
  51.   tiefe := tiefe - 1;
  52. END;
  53.  
  54. PROCEDURE hilfe;
  55. VAR ch: CHAR;
  56. BEGIN
  57.   mkmidwindow(43,11,1,15,0,0);
  58.   SetHeader(' Hilfsfenster ');
  59.   WriteLn;
  60.   TextColor(7);
  61.   Write(' Wenn Sie den Menüpunkt ');
  62.   TextColor(15);
  63.   Write('E');
  64.   TextColor(7);
  65.   WriteLn('nde wählen,');
  66.   WriteLn(' können Sie die Demo verlassen.');
  67.   WriteLn;
  68.   WriteLn(' Wenn Scroll-Lock aktiv ist, erreichen');
  69.   Write(' Sie über ');
  70.   TextColor(15);
  71.   Write('F1');
  72.   TextColor(7);
  73.   WriteLn(' die Menü-Hilfe.');
  74.   WriteLn;
  75.   WriteLn(' Die Punkte des Hauptmenüs erreichen Sie');
  76.   WriteLn(' jederzeit durch drücken der ALT-Taste und');
  77.   WriteLn(' des entsprechenden hellen Buchstabens.');
  78.   SetFoot(' Weiter mit ESC...');
  79.   REPEAT ch := ReadKey; UNTIL ch = #27;
  80.   rmwindow;
  81.   auswahl := 0;
  82. END;
  83.  
  84. BEGIN
  85.   tiefe := 0; m_pos:= 1;
  86.   status:= not_opened;
  87.   x:= 0; y:= 1;
  88.   REPEAT
  89.     auswahl := flipmenue(x, y,
  90.                        'BaumNr.:#1_BaumNr.:#2_BaumNr.:#3_'+
  91.                        '#Hilfe_#Ende_( Hauptmenü _', hor,
  92.                         status, m_pos);
  93.     IF y < 17 THEN y := y + 3 ELSE y := 20;
  94.     REPEAT
  95.       not_done := FALSE;
  96.       CASE auswahl OF
  97.         1, -120: pseudo(x +  1, y, auswahl);
  98.         2, -121: pseudo(x + 12, y, auswahl);
  99.         3, -122: pseudo(x + 23, y, auswahl);
  100.         4,  -35: hilfe;
  101.         ELSE not_done:= TRUE;
  102.       END;
  103.     UNTIL not_done;
  104.   UNTIL (auswahl = 5) OR (auswahl = -18);
  105.   rmwindow; { Flippmenue  }
  106. END.
  107.  
  108. (* ------------------------------------------------------ *)
  109. (*                 Ende von WINDEMO.PAS                   *)
  110.