home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 06_07 / trick / datwahl.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-03-24  |  3.4 KB  |  144 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    DATWAHL.PAS                         *)
  3. (*  Prozeduren zur Datei-Auswahl mit Cursortasten unter   *)
  4. (*                 Turbo Pascal 4.0                       *)
  5. (* ------------------------------------------------------ *)
  6.  
  7. USES CRT, DOS;
  8.  
  9. VAR  Datei        : ARRAY[1..100] OF STRING[12];
  10.      Anzahl, Waag,
  11.      Senk, Wahl   : INTEGER;
  12.  
  13. (* ------------------------------------------------------ *)
  14. PROCEDURE DateiAuswahl;
  15.  
  16. VAR   D     : SearchRec;
  17.       Maske : STRING[24];
  18.       Chw,I : INTEGER;
  19.          Ch : CHAR;
  20.  
  21. PROCEDURE CursorOff;
  22. BEGIN
  23.   GotoXY(1,4);
  24.   Mem[$b800:$01E0]:=32;
  25.   Mem[$b800:$01E1]:=0;
  26. END;
  27.  
  28. PROCEDURE Invers;
  29. BEGIN
  30.   TextColor(0); TextBackground(15);
  31.   GotoXY(Waag,Senk);
  32.   Write(Datei[Wahl]); CursorOff;
  33.   TextColor(7); TextBackground(0);
  34. END;
  35.  
  36. PROCEDURE Normal;
  37. BEGIN
  38.   GotoXY(Waag,Senk);
  39.   Write(Datei[Wahl]);
  40.   CursorOff;
  41. END;
  42.  
  43. PROCEDURE Cursor_Rechts;
  44. BEGIN
  45.   IF (Wahl+1) <= Anzahl THEN BEGIN
  46.     Normal; Inc(Wahl); Inc(Waag,15);
  47.     IF (Waag>64) THEN BEGIN
  48.       Waag:=4; Inc(Senk);
  49.     END;
  50.     Invers;
  51.   END;
  52. END;
  53.  
  54. PROCEDURE Cursor_Links;
  55. BEGIN
  56.   IF (Wahl-1) > 0 THEN BEGIN
  57.     Normal; Dec(Wahl); Dec(Waag,15);
  58.     IF (Waag<4) THEN BEGIN
  59.       Waag:=64; Dec(Senk);
  60.     END;
  61.     Invers;
  62.   END;
  63. END;
  64.  
  65. PROCEDURE Cursor_auf;
  66. BEGIN
  67.   IF (Wahl-5) >= 1 THEN BEGIN
  68.     Normal; Dec(Wahl,5);
  69.     Dec(Senk); Invers;
  70.   END;
  71. END;
  72.  
  73. PROCEDURE Cursor_ab;
  74. BEGIN
  75.   IF (Wahl+5) <= Anzahl THEN BEGIN
  76.     Normal; Inc(Wahl,5);
  77.     Inc(Senk); Invers;
  78.   END;
  79. END;
  80.  
  81. (* ----------------Prozedur Dateiwahl-------------------- *)
  82. BEGIN
  83.   ClrScr;
  84.   Maske:='*.PAS';      { In Maske den Suchstring eintragen }
  85.   Anzahl:=0;
  86.   Waag:=4; Senk:=5;    { Möglich: Laufw./Subdirect./Name   }
  87.                        { Beispiel: A:\Daten\*.Dat          }
  88.   FindFirst(Maske,Archive,D);
  89.   IF (DosError <> 0) THEN BEGIN   { Wenn Fehler beim Laden }
  90.     GotoXY(20,12);
  91.     Write(Chr(7), 'Directory oder Datei nicht gefunden');
  92.     CursorOff; Delay(2000); ClrScr;
  93.     Wahl:=0; Exit;
  94.   END;
  95.   WHILE (DosError = 0) AND (Anzahl < 100) DO BEGIN
  96.     Inc(Anzahl);
  97.     Datei[Anzahl] := D.Name;
  98.     FindNext(D);
  99.   END;
  100.  
  101.   (* --------------Menue auf Bildschirm------------------ *)
  102.   Window(1,1,80,3);
  103.   TextBackground(6); TextColor(0); ClrScr;
  104.   GotoXY(33,2); Write('Dateiauswahl');
  105.   TextColor(7); TextBackground(0);
  106.   Window(1,1,80,25);
  107.   FOR I:=1 TO Anzahl DO BEGIN
  108.     GotoXY(Waag,Senk);
  109.     Write(Datei[I]);
  110.     Inc(Waag,15);
  111.     IF (Waag>68) THEN BEGIN
  112.       Waag := 4; Inc(Senk)
  113.     END;
  114.   END;
  115.   Waag := 4; Senk := 5; Wahl := 1; Invers;
  116.  
  117.   (* --------------Datei auswählen----------------------- *)
  118.   REPEAT
  119.     Ch := ReadKey;
  120.     IF (Ch=#0) THEN BEGIN
  121.       Ch:=ReadKey; Chw:=Ord(Ch);
  122.       CASE Chw OF
  123.         77 : Cursor_Rechts;
  124.         75 : Cursor_Links;
  125.         80 : Cursor_ab;
  126.         72 : Cursor_auf;
  127.       END;
  128.     END;
  129.   UNTIL (Ch=#13);
  130.   ClrScr;
  131. END;
  132.  
  133. (* ------------------------------------------------------ *)
  134. (*                    Hauptprogramm                       *)
  135. BEGIN
  136.   DateiAuswahl;
  137.  
  138. (*  Wenn Wahl <> 0, dann kann zum Laden verzweigt werden. *)
  139. (*  Die gewählte Datei steht in :  Datei[Wahl]            *)
  140.  
  141. END.
  142. (* ------------------------------------------------------ *)
  143. (*                 Ende von DATWAHL.PAS                   *)
  144.