home *** CD-ROM | disk | FTP | other *** search
- {$R-,B-,V-}
- Unit KEYSCRN;
-
- Interface
-
- Uses Dos,Crt,StrTool;
-
-
- CONST IsColor : BOOLEAN = TRUE;
- ModeCO80: Boolean = true;
- ErrWinCol :Byte =Crt.White+16*Crt.Red;
- ErrHeadCol :Byte =Crt.Yellow+16*Crt.Red;
- Auto_ClrInp :Boolean=true;
- Maus_Ratio :Byte=10;
-
-
- TYPE
- TypeSchirmbyte = RECORD CASE BYTE OF { zur bequemeren }
- 1 : (Ch : CHAR; { Verwaltung }
- At : BYTE);
- 2 : (W : INTEGER);
- END;
-
- WordArray = ARRAY [0..1999] OF TypeSchirmbyte; { zur Windowdarstellung }
- WordPtr = ^ WordArray; { Windowinhalt }
- WindowType = RECORD
- Inhalt,Save : WordPtr; { Vorder- und Hintergrund }
- X1,Y1 : BYTE; { Linke obere Ecke }
- Width,Height : BYTE; { Größe des Windows }
- Size : INTEGER; { Größe in Bytes }
- Saved : BOOLEAN; { Hintergrund gesichert ? }
- END;
- HotKeyType =Record
- Key:Char;
- P :Byte;
- end;
- MenueType = RECORD
- Picture : WindowType; { Normales Window }
- Items,Color, { Menüpunkte, Farbe }
- Pcolor : BYTE; { Zeigerfarbe }
- HiColor : Byte; { Farbe des HotKeys}
- LastSel : Byte;
- HotKeys : array[1..20] of HotKeyType;
- END;
- MenueTextArray = ARRAY [1..20] OF Str80; { bis 20 Zeilen pro Menü }
- MenueTextPtr = ^ MenueTextArray; { zur bequemeren Vernichtung }
-
-
- Const FuellChar :Char ='_';
- Overwrite :Boolean=true;
- EditForeground:Byte=White;
- Editbackground:Byte=Red;
- Mouse_Left :Char=^Q;
- Mouse_Mid :Char=Esc;
- Mouse_Right:Char=^M;
-
-
- (* Menge der möglichen Terminierungszeichen einer Eingabe *)
-
- Var OutString :Str80;
- CursorInital:Word;
-
- Type Helpscreen=Array[1..15] of Str64;
- HelpF =File of Helpscreen;
-
- Const ActualHelp :Integer=0;
- Helpfilename ='GEDDY.HLP';
- Helpavailable: Boolean= True;
- MaxHelpNr : Integer =-1;
-
- Function CalcAttr(fore,back:Byte):Byte;
-
- PROCEDURE MakeWindow (VAR Slide : WindowType; { Window erstellen }
- Xo,Yo,Breite,Hoehe,At : BYTE;
- VAR Ok : INTEGER);
-
- PROCEDURE GetWindow (VAR Slide : WindowType; { Window vom }
- Xo,Yo,Breite,Hoehe : BYTE; { Bildschirm lesen }
- VAR Ok : INTEGER);
-
- PROCEDURE PutWindow (VAR Slide : Windowtype; { Window anzeigen und Hintergrund }
- VAR Ok : INTEGER); { sichern }
-
- PROCEDURE ShowWindow (VAR Slide : Windowtype); { Anzeigen ohne sichern des }
-
- PROCEDURE MoveWindow ( VAR Slide : WindowType; { Window von der aktuellen }
- X,Y : BYTE; { an neue Position bringen. }
- VAR Ok : INTEGER); { und anzeigen }
-
- PROCEDURE DeleteWindow ( VAR Slide : WindowType ); { Windowspeicher freigeben }
-
- PROCEDURE RestoreWindow ( VAR Slide : WindowType; { Hintergrund restaurieren }
- VAR Ok : INTEGER);
-
- PROCEDURE WriteToWindow (VAR Slide : WindowType; { Beschriftung von Windows }
- X,Y,At : BYTE;
- Zeile : Str80);
-
- PROCEDURE MakeFrame (VAR Slide : WindowType; { Windows Einrahmen }
- At,Typ : BYTE);
-
- PROCEDURE MakeMenue (VAR Menu : MenueType; { MAC Menü erstellen }
- Xo,Yo,Breite, { Window mit Rahmen }
- Hoehe,Punkte, { und Angabe der }
- Farbe,Balken,
- KeyCol : BYTE; { Auswahlmöglichkeiten }
- MenueText : MenueTextPtr;
- VAR Ok : INTEGER);
-
- PROCEDURE FlipLine (X,Y,At,Len : INTEGER); { Zeile auf Bildschirm umfärben }
-
- FUNCTION GetKey(Term:Charset):Char; { Eine Taste lesen }
-
- FUNCTION GetMenueChoice ( VAR Menu : MenueType; { Menü anzeigen und }
- VAR Ok : INTEGER ):BYTE; { Auswahl lesen }
-
- PROCEDURE DisplayString (X,Y,At:BYTE; S:Str80); { Direkt auf den Bildschirm }
-
- PROCEDURE DisplayInteger (X,Y,At:BYTE; Z:INTEGER; L:BYTE; Left:BOOLEAN);
-
- PROCEDURE DisplayReal (X,Y,At:BYTE; Z:REAL; L,K:INTEGER; Left:BOOLEAN);
-
- Procedure FullScreen;
-
- Procedure SetEditColors(Tfore,tback,Efore,Eback:Byte);
-
- Procedure SaveColors;
-
- Procedure RestoreColors;
-
- Procedure SaveCrtWindow;
-
- Procedure RestoreCrtWindow;
-
- PROCEDURE SetCursor (C:Word); { Cursorform setzen }
-
- PROCEDURE GetCursor (VAR C:Word); { Cursorform lesen }
-
- PROCEDURE FlushKbd; { Löscht den Tastaturpuffer }
-
- Procedure Beep;
-
- Procedure Dohelp;
-
- Function Keypressed:Boolean;
-
- Procedure ResetMouseDelta;
-
- Function ReadKbd(Var Ch:Char):Integer;
-
- Procedure InputKbd(var S : Str80; (*Eingabestring*)
- L,X,Y : Integer; (* L= max. Länge,XY=Schirmpos.*)
- Term : CharSet; (* Menge der Terminierungszeichen*)
- OkSet : CharSet; (* zulässige Eingabezeichen *)
- var TC : Char ); (* Terminierungszeichen*)
-
- Function LeseInt(I, L,X,Y,Min,Max :Integer;Var TC :Char): Integer;
-
- Function Cardinal(X:Integer):Real;
-
- Procedure RealStr(X:Real;L: Integer; Var S :Str80);
-
- Function LeseReal(Zahl:Real; L,X,Y :Integer;Min,Max :Real ;
- Var TC :Char): Real;
-
- Procedure Select( Prompt : Str80;
- Term : CharSet;
- var TC : Char );
-
- Function Menueende(Var L :Integer;Max,Genug :Integer;TC :Char) :Boolean;
-
- Procedure LeseFname(Var S :Str10;X,Y :Integer;Var TC:Char);
-
- Procedure WaitonKey;
-
- Function SelectError(Msg,Head:Str80;OkSet:Charset):Char;
-
- Procedure Message(Msg:Str80);
-
-
- implementation
-
- (*$I WINDOWS.IMP *)
- (*$I INPUT.IMP *)
-
- Var ExitSave :Pointer;
-
- {$F+} Procedure Myexit;{$F-}
- begin
- Crt.Normvideo;
- SetCursor(CursorInital);
- ExitProc:=ExitSave;
- end;
-
- begin
- ExitSave:=ExitProc;
- ExitProc:=@Myexit;
- Iscolormonitor;
- If Not ModeCO80 then
- begin
- Editbackground:=black;
- ErrWinCol:=CalcAttr(Crt.white,Crt.black);
- ErrHeadCol:=CalcAttr(lightgray,Crt.black);
- DiaWinCol:=CalcAttr(lightgray,Crt.black);
- DiaHeadCol:=CalcAttr(Crt.White,Crt.black);
- end;
- GetCursor(CursorInital);
- SetCursor($2020);
- MausInit;
- Crea_Help;
- CheckBreak:=false;
- end.
-
-