home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 11 / eingbsp.prg < prev    next >
Encoding:
Text File  |  1987-09-07  |  5.5 KB  |  147 lines

  1. 0010 //  save "eingbsp.prg"
  2. 0020
  3. 0030 vorbereiten
  4. 0040 rahmen'zeichnen
  5. 0050 textvorgabe'einsetzen
  6. 0060 eingabe
  7. 0070
  8. 0080 PROC vorbereiten
  9. 0090   USE system
  10. 0110   DIM adresse$(1:200) OF 50
  11. 0120   RESTORE anfang
  12. 0130   READ anzahl# // Anzahl der Eingabefelder
  13. 0140   DIM zsl#(1:3,1:anzahl#) // Zeile, Spalte, Länge (zweidimensionales Feld)
  14. 0150   DIM marke$(1:4) OF 1 // Marken für Eingabefeld
  15. 0160   READ zsl#(,) // Die für diese Maske gültigen Positionierungsdaten für
  16.        Zeile, Spalte und Länge des Eingabefeldes werden eingelesen.
  17. 0170   
  18. 0180 anfang:
  19. 0190   DATA 7 // Anzahl der Eingabefelder
  20. 0200   
  21. 0210   DATA 6,11,12,13,14,16,19 //  Zeilen
  22. 0220   DATA 20,20,20,20,20,20,20 // Spalten
  23. 0230   DATA 4,30,30,30,30,30,50 //  Feldlängen
  24. 0240   
  25. 0250   marke$(1):="[" // Feldbegrenzung links
  26. 0260   marke$(2):="]" // Feldbegrenzung rechts
  27. 0270   
  28. 0280   marke$(3):=" " // Löschen der
  29. 0290   marke$(4):=" " // Feldbegrenzungen
  30. 0300   
  31. 0310   cursorspalte#:=1 // Cursorpositionierungsangabe für das Eingabefeld
  32. 0320   cursor'hoch$:=CHR$(0)+CHR$(72) // Zuweisung von ASCII-Codes zur Verbes-
  33. 0330   cursor'runter$:=""0""+"P" //      serung der Lesbarkeit eines Programms.
  34. 0340   enter$:=""13"" //                 Die Zeilen 310 und 320 zeigen
  35. 0350   esc'taste$:=""27"" //             alternative Schreibmöglichkeiten
  36. 0360   glocke$:=""7""
  37. 0370   fettschrift$:=""16""
  38. 0380   blinkschrift$:=""20""
  39. 0390   negativschrift$:=""18""
  40. 0400   
  41. 0410   datum$:=DATE$(9:10)+"."+DATE$(6:7)+"."+DATE$(:4)
  42. 0411   // Der Zeichenkette datum$ werden Elemente der Systemfunktion DATE$
  43. 0412   // zugewiesen, so daß die deutsche Datumsform entsteht.
  44. 0420 ENDPROC vorbereiten
  45. 0430 
  46. 0440 PROC eingabe 
  47. 0450   //
  48. 0460   //  zsl#(1,)     Zeile
  49. 0470   //  zsl#(2,)     Spalte
  50. 0480   //  zsl#(3,)     Länge des Eingabefeldes
  51. 0490   //
  52. 0500   //  adresse$()   enthält die eingegebene Adresse.
  53. 0510   //
  54. 0520   USE system
  55. 0530   termchars(cursor'hoch$+cursor'runter$+enter$+esc'taste$)
  56. 0540   
  57. 0550   // Die Eingabezeile kann verlassen werden durch Eingabe von
  58. 0560   // Cursor hoch, Cursor runter, Enter oder Escape.
  59. 0570   
  60. 0580   letztes'feld#:=MAXINDEX(zsl#(,),2) // gibt Anzahl der vorh. Spalten
  61. 0590   adresse$():="" // Löschen der Adressfelder vor der nächsten Eingabe
  62. 0600
  63. 0610   feld#:=2 // Die Eingabemarke wird auf Feld 2 (Anrede) gesetzt.
  64. 0620   LOOP
  65. 0630     zeile#:=zsl#(1,feld#); spalte#:=zsl#(2,feld#); länge#:=zsl#(3,feld#)
  66. 0640     PRINT AT zeile#,spalte#+länge#+1: marke$(2)
  67. 0650     IF termchar$<>enter$ THEN inputpos(cursorspalte#)
  68. 0660     INPUT AT zeile#,spalte#,länge#: marke$(1): adresse$(feld#)
  69. 0670     CASE termchar$ OF 
  70. 0680     WHEN cursor'hoch$
  71. 0690       cursorspalte#:=termpos#
  72. 0700       marke'löschen
  73. 0710       feld#:=feld#-1
  74. 0720       IF feld#<2 THEN feld#:=2 // obere Grenze: zweites Eigabefeld
  75. 0730     WHEN cursor'runter$
  76. 0740       cursorspalte#:=termpos#
  77. 0750       marke'löschen; feld#:=feld#+1
  78. 0760       IF feld#>letztes'feld# THEN feld#:=letztes'feld# // Eingabemarke
  79.            bleibt in der letzten Zeile.
  80. 0770     WHEN enter$
  81. 0780       marke'löschen; feld#:=feld#+1
  82. 0790       IF feld#>letztes'feld# THEN feld#:=2 // springt nach RETURN auf die  2. Zeile
  83. 0800     OTHERWISE // Escape wurde gedrückt
  84. 0810       marke'löschen
  85. 0820       meldung("Programmausschnitt hier beendet!",esc'taste$)
  86. 0830       adresse'speichern
  87. 0840       EXIT
  88. 0850     ENDCASE
  89. 0860   ENDLOOP
  90. 0870   
  91. 0880   termchars(enter$) // zurückschalten auf normalen Einschaltzustand
  92. 0890   
  93. 0900   PROC marke'löschen 
  94. 0910     PRINT AT zeile#,spalte#: marke$(3)
  95. 0920     PRINT AT zeile#,spalte#+länge#+1: marke$(4)
  96. 0930   ENDPROC marke'löschen
  97. 0940   
  98. 0950 ENDPROC eingabe
  99. 0960 
  100. 0970 PROC rahmen'zeichnen 
  101. 0980   PAGE
  102. 0990   PRINT AT 1,1: "╔"+18*"═"+"╦"+40*"═"+"╦"+18*"═"+"╗"
  103. 1000   PRINT AT 2,1: "║"+18*" "+"║"+40*" "+"║"+18*" "+"║"
  104. 1010   PRINT AT 3,1: "║"+18*" "+"║"+40*" "+"║"+18*" "+"║"
  105. 1020   PRINT AT 4,1: "╠"+18*"═"+"╩"+40*"═"+"╩"+18*"═"+"╣"
  106. 1030   FOR zeile#:=5 TO 19 DO PRINT AT zeile#,1: "║"+78*" "+"║"
  107. 1040   PRINT AT 20,1: "╠"+25*"═"+"╦"+52*"═"+"╣"
  108. 1050   PRINT AT 21,1: "║"+25*" "+"║"+52*" "+"║"
  109. 1060   PRINT AT 22,1: "╚"+25*"═"+"╩"+52*"═"+"╝"
  110. 1070 ENDPROC rahmen'zeichnen
  111. 1080 
  112. 1090 PROC textvorgabe'einsetzen 
  113. 1100   PRINT AT 2,6: "Rechnungen"
  114. 1110   zentrieren(2,"FIRMENNAME")
  115. 1120   PRINT AT 2,66: "Vers. 1.00"
  116. 1130   PRINT AT 6,3: "Rechnungsnummer:"
  117. 1140   PRINT AT 6,52: "Datum   :";datum$
  118. 1150   PRINT AT 7,52: "Uhrzeit :";TIME$
  119. 1160   PRINT AT 11,3: "Anrede        :"
  120. 1170   PRINT AT 12,3: "Vorname       :"
  121. 1180   PRINT AT 13,3: "Zuname        :"
  122. 1190   PRINT AT 14,3: "Straße        :"
  123. 1200   PRINT AT 16,3: "PLZ Wohnort   :"
  124. 1210   PRINT AT 19,3: "Bemerkungen   :"
  125. 1220   PRINT AT 21,3: "Datensatz-Nr. :"
  126. 1230   PRINT AT 21,34: negativschrift$+" Nach beendeter Einagbe <Esc> drücken."
  127. 1240 ENDPROC textvorgabe'einsetzen
  128. 1250 
  129. 1260 PROC zentrieren(zeile#,inhalt$) 
  130. 1270   spalte#:=INT((81-LEN(inhalt$))/2)
  131. 1280   PRINT AT zeile#,spalte#: inhalt$,
  132. 1290 ENDPROC zentrieren
  133. 1300 
  134. 1310 PROC meldung(text$,taste$) 
  135. 1320   PRINT AT 21,30: SPC$(49)
  136. 1330   PRINT AT 21,30: glocke$+fettschrift$+blinkschrift$+text$
  137. 1340   REPEAT
  138. 1350     antworttaste$:=KEY$
  139. 1360   UNTIL antworttaste$ IN taste$
  140. 1370   PRINT AT 21,30: SPC$(49)
  141. 1380 ENDPROC meldung
  142. 1390 
  143. 1400 PROC adresse'speichern 
  144. 1410   // Diese Prozedur muß noch mit Inhalt gefüllt werden. Sie wurde
  145. 1420   // hier aufgenommen, um den Programmausschnitt lauffähig zu machen.
  146. 1430 ENDPROC adresse'speichern
  147.