(* ---------------------------------------------------------------------- *) (* Programm : Portfolio Demo *) (* - Das Programm benutzt alle Funktionen der PortAES-Unit *) (* mindestens einmal. *) (* letzte Žnderung : 13. April 1996 *) (* ---------------------------------------------------------------------- *) Program PortfolioDemo; Uses PortCRT, PortAES, PortHelp; (* Diese Funktion stellt ein Men dar, in dem der User w„hlen kann, ob *) (* das Programm wirklich abgebrochen werden soll. *) Function Programmende : Boolean; Var p : ScreenbufferType; a : Byte; Begin Programmende := False; SaveScreen( 10, 2, 20, 6, p ); If Menu( 10, 2, 'Ende ?', 'Ja' + Chr(0) + 'Nein', '', a ) Then If a = 0 Then Programmende := True; RestoreScreen( 10, 2, 20, 6, p ); End; (* Hilfefenster ist ein einfaches Message Window *) Procedure HilfeFenster; Var FensterTitel, FensterText, dummy : String; xur, yur, cMode : Byte; puffer : ScreenBufferType; keyCode : Char; Begin FensterTitel := 'Hilfefenster'; FensterText := 'Demomen Eins mit F2' + Chr( 0 ) + 'Demomen Zwei mit F3' + Chr( 0 ) + 'Ende mi ESC im Textfenster'; BoxAreaCalculation( 1, 1, FensterTitel, FensterText, '', xur, yur ); SaveScreen( 1, 1, xur, yur, puffer ); (* Bevor das Fenster dargestellt wird, wird der Cursor ausgeschaltet *) cMode := SetCursorMode( 0 ); MessageWindow( 1, 1, FensterTitel, FensterText ); keyCode := ReadKey; cMode := SetCursorMode( 2 ); RestoreScreen( 1, 1, xur, yur, puffer ); End; (* Dieses Men benutzt die Variable DefaultText um weitere Daten am *) (* rechten Rand des Mens zu platzieren. *) Procedure MenuZweiAufrufen; Var MenuTitel, MenuText, DefaultsText, dummy : String; xur, yur, auswahl : Byte; puffer : ScreenBufferType; Begin MenuTitel := 'Demo Men Zwei'; (* Die Leerzeichen hinter dem ersten Meneintrag, verbreitern das *) (* Men so weit, das der Defaulttext nicht den eigentlichen Men- *) (* text berschreibt. *) MenuText := 'Erster Meneintrag ' + Chr( 0 ) + 'Zweiter Meneintrag' + Chr( 0 ) + 'Dritter Meneintrag'; DefaultsText := '' + Chr( 0 ) + 'Wert 60' + Chr( 0 ) + 'Wert 184'; BoxAreaCalculation( 4, 2, MenuTitel, MenuText, DefaultsText, xur, yur ); SaveScreen( 4, 2, xur, yur, puffer ); If Menu( 4, 2, MenuTitel, MenuText, DefaultsText, auswahl ) Then Begin Str( auswahl, dummy ); ErrorWindow( 6, 3, 'Meneintrag ' + dummy + ' ausgew„hlt !' ); End; RestoreScreen( 4, 2, xur, yur, puffer ); End; (* So wie hier sollte ein Standartmen funktionieren !!! *) Procedure MenuEinsAufrufen; Var MenuTitel, MenuText, dummy : String; xur, yur, auswahl : Byte; puffer : ScreenBufferType; Begin MenuTitel := 'Demo Men Eins'; MenuText := 'Das ist ein ...' + Chr( 0 ) + 'Test, um die ...' + Chr( 0 ) + 'Funktionen des AES ...' + Chr( 0 ) + 'des Portfolio ...' + Chr( 0 ) + 'zu demonstrieren.' + Chr( 0 ) + 'Men Nummer Zwei aufrufen !'; BoxAreaCalculation( 3, 0, MenuTitel, MenuText, '', xur, yur ); SaveScreen( 3, 0, xur, yur, puffer ); While Menu( 3, 0, MenuTitel, MenuText, '', auswahl ) Do Begin If auswahl = 5 Then (* Hiermit wird zum zweiten Men verzweigt. Wenn das Programm *) (* von da zurck kommt, dann wird in diesem Men hier weiter *) (* gemacht. Darum auch die While-Konstruktion. *) MenuZweiAufrufen Else Begin Str( auswahl, dummy ); ErrorWindow( 5, 2, 'Meneintrag ' + dummy + ' ausgew„hlt !' ); End; End; RestoreScreen( 3, 0, xur, yur, puffer ); End; Var p : ScreenBufferType; keyCode : Char; quit : Boolean; Begin SaveScreen( 0, 0, 39, 7, p ); ClrScr; (* Der DrawBox-Befehl und alles was noch dranh„ngt, *) (* simuliert ein Textfenster *) DrawBox( 0, 0, 39, 7, 1 ); EnableSystemStatusLine( 1, 7 ); GotoXY( 2, 0 ); Write( ' Demofenster ' ); GotoXY( 25, 0 ); Write( ' F1 = Hilfe ' ); (* Fenster und Fensterrahmen sind nun bestcket ... *) GotoXY( 10, 2 ); Write( 'Portfolio AES Demo' ); GotoXY( 6, 3 ); Write( 'programmiert in Turbo Pascal' ); GotoXY( 6, 5 ); Write( '(c)' + Chr( 39 ) + '96 by Turtle Vision inc.' ); (* und das ist der Inhalt des Fensters *) quit := False; While Not quit Do Begin GotoXY( 1, 1 ); keyCode := ReadKey; If keyCode = #27 Then If Programmende Then quit := True; If keyCode = #0 Then Begin keyCode := ReadKey; If keyCode = #59 Then HilfeFenster; If keyCode = #60 Then MenuEinsAufrufen; If keyCode = #61 Then MenuZweiAufrufen; End; End; DisableSystemStatusLine; RestoreScreen( 0, 0, 39, 7, p ); End.