home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* DATWAHL.PAS *)
- (* Prozeduren zur Datei-Auswahl mit Cursortasten unter *)
- (* Turbo Pascal 4.0 *)
- (* ------------------------------------------------------ *)
-
- USES CRT, DOS;
-
- VAR Datei : ARRAY[1..100] OF STRING[12];
- Anzahl, Waag,
- Senk, Wahl : INTEGER;
-
- (* ------------------------------------------------------ *)
- PROCEDURE DateiAuswahl;
-
- VAR D : SearchRec;
- Maske : STRING[24];
- Chw,I : INTEGER;
- Ch : CHAR;
-
- PROCEDURE CursorOff;
- BEGIN
- GotoXY(1,4);
- Mem[$b800:$01E0]:=32;
- Mem[$b800:$01E1]:=0;
- END;
-
- PROCEDURE Invers;
- BEGIN
- TextColor(0); TextBackground(15);
- GotoXY(Waag,Senk);
- Write(Datei[Wahl]); CursorOff;
- TextColor(7); TextBackground(0);
- END;
-
- PROCEDURE Normal;
- BEGIN
- GotoXY(Waag,Senk);
- Write(Datei[Wahl]);
- CursorOff;
- END;
-
- PROCEDURE Cursor_Rechts;
- BEGIN
- IF (Wahl+1) <= Anzahl THEN BEGIN
- Normal; Inc(Wahl); Inc(Waag,15);
- IF (Waag>64) THEN BEGIN
- Waag:=4; Inc(Senk);
- END;
- Invers;
- END;
- END;
-
- PROCEDURE Cursor_Links;
- BEGIN
- IF (Wahl-1) > 0 THEN BEGIN
- Normal; Dec(Wahl); Dec(Waag,15);
- IF (Waag<4) THEN BEGIN
- Waag:=64; Dec(Senk);
- END;
- Invers;
- END;
- END;
-
- PROCEDURE Cursor_auf;
- BEGIN
- IF (Wahl-5) >= 1 THEN BEGIN
- Normal; Dec(Wahl,5);
- Dec(Senk); Invers;
- END;
- END;
-
- PROCEDURE Cursor_ab;
- BEGIN
- IF (Wahl+5) <= Anzahl THEN BEGIN
- Normal; Inc(Wahl,5);
- Inc(Senk); Invers;
- END;
- END;
-
- (* ----------------Prozedur Dateiwahl-------------------- *)
- BEGIN
- ClrScr;
- Maske:='*.PAS'; { In Maske den Suchstring eintragen }
- Anzahl:=0;
- Waag:=4; Senk:=5; { Möglich: Laufw./Subdirect./Name }
- { Beispiel: A:\Daten\*.Dat }
- FindFirst(Maske,Archive,D);
- IF (DosError <> 0) THEN BEGIN { Wenn Fehler beim Laden }
- GotoXY(20,12);
- Write(Chr(7), 'Directory oder Datei nicht gefunden');
- CursorOff; Delay(2000); ClrScr;
- Wahl:=0; Exit;
- END;
- WHILE (DosError = 0) AND (Anzahl < 100) DO BEGIN
- Inc(Anzahl);
- Datei[Anzahl] := D.Name;
- FindNext(D);
- END;
-
- (* --------------Menue auf Bildschirm------------------ *)
- Window(1,1,80,3);
- TextBackground(6); TextColor(0); ClrScr;
- GotoXY(33,2); Write('Dateiauswahl');
- TextColor(7); TextBackground(0);
- Window(1,1,80,25);
- FOR I:=1 TO Anzahl DO BEGIN
- GotoXY(Waag,Senk);
- Write(Datei[I]);
- Inc(Waag,15);
- IF (Waag>68) THEN BEGIN
- Waag := 4; Inc(Senk)
- END;
- END;
- Waag := 4; Senk := 5; Wahl := 1; Invers;
-
- (* --------------Datei auswählen----------------------- *)
- REPEAT
- Ch := ReadKey;
- IF (Ch=#0) THEN BEGIN
- Ch:=ReadKey; Chw:=Ord(Ch);
- CASE Chw OF
- 77 : Cursor_Rechts;
- 75 : Cursor_Links;
- 80 : Cursor_ab;
- 72 : Cursor_auf;
- END;
- END;
- UNTIL (Ch=#13);
- ClrScr;
- END;
-
- (* ------------------------------------------------------ *)
- (* Hauptprogramm *)
- BEGIN
- DateiAuswahl;
-
- (* Wenn Wahl <> 0, dann kann zum Laden verzweigt werden. *)
- (* Die gewählte Datei steht in : Datei[Wahl] *)
-
- END.
- (* ------------------------------------------------------ *)
- (* Ende von DATWAHL.PAS *)
-