'+-------------------------+ '| TREE - CARD v.1.0 | '| programmiert von | '| Mario Srowig | '+-------------------------+ CLEAR 100000 Init_Programm Init_Menue REPEAT Menue IF Hmen%=1 THEN IF Aktivu%=1 THEN Programminfo IF Aktivu%=2 THEN Systeminfo IF Aktivu%=3 THEN Diskinfo ENDIF IF Hmen%=2 THEN IF Aktivu%=1 THEN Neue_Datei IF Aktivu%=2 THEN Datei_Oeffnen IF Aktivu%=3 THEN Datei_Schliessen IF Aktivu%=4 THEN Datei_Loeschen IF Aktivu%=5 THEN Datei_Umbenennen IF Aktivu%=6 THEN Arbeitslaufwerk IF Aktivu%=7 THEN Exit_Programm ENDIF IF Hmen%=3 THEN IF Aktivu%=1 THEN Auto_Routing IF Aktivu%=2 THEN Verzweigung_Zurueck IF Aktivu%=3 THEN Karte_Vor IF Aktivu%=4 THEN Karte_Zurueck IF Aktivu%=5 THEN Karte_Anwaehlen IF Aktivu%=6 THEN Leerkarte_Suchen ENDIF IF Hmen%=4 THEN IF Aktivu%=1 THEN Aktuelle_Karte_Editieren IF Aktivu%=2 THEN Naechste_Karte_Editieren IF Aktivu%=3 THEN Aktuelle_Karte_Loeschen IF Aktivu%=4 THEN Verzweigung_Erzeugen IF Aktivu%=5 THEN Verzweigung_Loeschen ENDIF UNTIL Endlos%L DEF PROC Init_Programm CLS FILL COLOR =0 Schirmpuffer%L= MEMORY(32006) Cursor_Aus Nkarten%L=500:Satzlaenge%=1326:Satznr%=1 Auto_Routing%=Nein% Ja%=1:Nein%=0:Nfenster%=4:Ntyp%=8 DIM Breite%(Nfenster%,Ntyp%),Hoehe%(Nfenster%,Ntyp%) DIM X%(Nfenster%,Ntyp%),Y%(Nfenster%,Ntyp%),Bit%(8) DIM Text$(Nfenster%),Feldlaenge%(Nfenster%,Ntyp%) DIM Typ%(Nkarten%L),Nfenster%(Ntyp%) DIM Verzweigung%(Nkarten%L,2^Nfenster%) Aufl%= PEEK($44C):'Aktuelle Bildschirmaufloesung ermitteln IF Aufl%=0 THEN Meldung$="Das Programm l„uft|nur in mittlerer|oder hoher Aufl”sung!" Hinweis(Meldung$) IF Wahl%=1 THEN END ENDIF Edit_Aus%=Ja%:Rahmen%=Ja% FOR Typ%=1 TO Ntyp% READ Nfenster%(Typ%) FOR I%=1 TO Nfenster%(Typ%) READ X%(I%,Typ%),Y%(I%,Typ%),Breite%(I%,Typ%),Hoehe%(I%,Typ%) Feldlaenge%(I%,Typ%)=Breite%(I%,Typ%)*Hoehe%(I%,Typ%) NEXT NEXT 'Daten fr die verschiedenen Kartentypen 'Datenformat: Anzahl der Fenster, ' Spalte 1.Zeichen im Fenster, Zeile 1.Zeichen im Fenster, ' Fensterbreite ( n Zeichen ), Fensterh”he ( n Zeichen ) DATA 1,3,3,76,17 DATA 2,3,3,36,18,42,3,36,18 DATA 2,3,3,76,8,3,12,76,8 DATA 3,3,3,76,4,3,9,76,4,3,15,76,4 DATA 3,3,3,76,13,3,17,36,3,43,17,36,3 DATA 4,3,3,76,3,3,8,76,2,3,12,76,2,3,16,76,2 DATA 4,3,3,36,17,41,3,38,4,41,9,38,4,41,15,38,4 DATA 4,3,3,76,13,3,17,24,3,29,17,24,3,55,17,24,3 Arbeitslaufwerk Meldung$="Neue Datei erzeugen oder|bestehende Datei ”ffnen?" Wahl1$="Neue":Wahl2$="Bestehende" Entscheidung1(Meldung$,Wahl1$,Wahl2$) IF Wahl%=1 THEN Neue_Datei IF Wahl%=2 THEN Datei_Oeffnen Karte_Anzeigen RETURN DEF PROC Init_Menue CLIP 0,0,640,200*Aufl% 'Hauptmenueleiste Nleiste%=4:'Anzahl der Auswahlmoeglichkeiten DIM Men$(Nleiste%) DIM Untermen$(20,Nleiste%):'Maximal 20 Funktionen pro Untermenue DIM Maxbreite%(Nleiste%):'Maximale Leistenbreite pro Untermenue DIM Nuntermen%(Nleiste%):'Anzahl der Auswahlmoeglichkeiten pro Leiste RESTORE Menuedaten FOR N%=1 TO Nleiste% READ Men$(N%),Nuntermen%(N%) Breite%=0:Maxbreite%=0 FOR I%=1 TO Nuntermen%(N%) READ Untermen$(I%,N%) Breite%= LEN(Untermen$(I%,N%)) IF Breite%>=Maxbreite% THEN Maxbreite%=Breite% NEXT Maxbreite%(N%)=Maxbreite% NEXT -Menuedaten DATA " INFO ",3," Programm "," System "," Disk " DATA " DATEI ",7," Neue Datei anlegen "," Datei oeffnen " DATA " Datei schliessen "," Datei loeschen "," Datei umbenennen " DATA " Arbeitslaufwerk "," Programm verlassen " DATA " ANZEIGEN ",6," Auto Routing "," Verzweigung zurck " DATA " Karte vor "," Karte zurck "," Karte anw„hlen "," Leerkarte suchen " DATA " EDITIEREN ",5," Aktuelle Karte "," N„chste Karte " DATA " Karte l”schen "," Verzweigung erzeugen "," Verzweigung l”schen " RETURN DEF PROC Menue LOCAL N% MODE =1: FILL COLOR =1 PBOX 0,0,640,8*Aufl% Invers_Ein: LOCATE 1,0 FOR N%=1 TO Nleiste% PRINT Men$(N%); NEXT Invers_Aus Schirm_Sichern 'Gew„hlten Menuepunkt invertieren Hmen%=0 MOUSEON : MODE =3 REPEAT Xu%=0:X0%=0:X1%=0:Mx%= MOUSEX :My%= MOUSEY IF My%<8*Aufl% THEN FOR N%=1 TO Nleiste% X1%=X0%+( LEN(Men$(N%))*8) IF Mx%>X0% AND Mx%X1% THEN Weiter%=1 IF MOUSEY >8*Aufl% THEN Weiter%=1 IF MOUSEBUT =1 THEN Weiter%=1:Hmen%=N%: MOUSEOFF : PBOX X0%,0 TO X1%,8*Aufl%: MOUSEON ENDIF UNTIL Weiter%=1 MOUSEOFF : PBOX X0%,0 TO X1%,8*Aufl%: MOUSEON ENDIF X0%=X1% NEXT ENDIF UNTIL MOUSEBUT =1 MOUSEOFF : MODE =1 IF Hmen%=0 THEN EXIT Breite%=Maxbreite%(Hmen%)*8:Hoehe%=Nuntermen%(Hmen%)*8*Aufl%+1 Spalte%=Xu%/8 FILL COLOR =0 PBOX Xu%,8*Aufl%,Breite%,Hoehe% BOX Xu%-1,8*Aufl%,Breite%+2,Hoehe%+1 FILL COLOR =1 FOR Zeile%=2 TO 2+Nuntermen%(Hmen%) LOCATE Zeile%,Spalte%: PRINT Untermen$(Zeile%-1,Hmen%) NEXT Clear_Maus MOUSEON : MODE =3 REPEAT Aktivu%=0:Weiter%=0:Mx%= MOUSEX :My%= MOUSEY IF Mx%>Xu% AND Mx%8*Aufl% AND My%<8*Aufl%+Hoehe% THEN Aktivu%= INT(( MOUSEY -1)/(8*Aufl%)) IF Aktivu%>0 THEN MOUSEOFF : PBOX Xu%,Aktivu%*8*Aufl%,Breite%,8*Aufl%: MOUSEON ENDIF REPEAT IF MOUSEX Xu%+Breite% THEN Weiter%=1 IF MOUSEY Aktivu%*8*Aufl%+8*Aufl% THEN Weiter%=1 IF MOUSEBUT =1 THEN Weiter%=1 UNTIL Weiter%=1 IF Aktivu%>0 THEN MOUSEOFF : PBOX Xu%,Aktivu%*8*Aufl%,Breite%,8*Aufl%: MOUSEON ENDIF ENDIF UNTIL MOUSEBUT =1 MOUSEOFF Schirm_Restaurieren MODE =1: FILL COLOR =0 RETURN DEF PROC Edit_Text(X0%,Y0%,Breite%,Hoehe%,R Text$,Rahmen%,Edit_Aus%) LOCAL N% Tbuffer$= SPACE$(Breite%*Hoehe%) MID$ (Tbuffer$,1, LEN(Text$))=Text$ X0%=X0%-1 Spalte%=X0%:Zeile%=Y0%:X1%=X0%+Breite%-1:Y1%=Y0%+Hoehe%-1 IF Rahmen%=1 THEN Y0box%=(Y0%-1)*8*Aufl% Hoehebox%=Hoehe%*8*Aufl% N%=6 PBOX X0%*8-N%,Y0box%-(N%\2)*Aufl%,Breite%*8+2*N%,Hoehebox%+N%*Aufl% BOX X0%*8-N%,Y0box%-(N%\2)*Aufl%,Breite%*8+2*N%,Hoehebox%+N%*Aufl% ENDIF FOR N%=0 TO Hoehe%-1 LOCATE Zeile%+N%,X0% PRINT MID$(Tbuffer$,N%*Breite%+1,Breite%) NEXT IF Edit_Aus%=1 THEN EXIT REPEAT Xcrel%=Spalte%-X0%+1 Ycrel%=Zeile%-Y0% Cursor_An LOCATE Zeile%,Spalte% Hole_Tastaturcode 'Normaler Text IF Scan%=0 THEN MID$ (Tbuffer$,Xcrel%+Breite%*Ycrel%,1)= CHR$(Code%) PRINT CHR$(Code%); Spalte%=Spalte%+1 IF Spalte%>X1% THEN Zeile%=Zeile%+1:Spalte%=X0% IF Zeile%>Y1% THEN Zeile%=Y1%:Spalte%=X1% ENDIF 'Editiertasten IF Scan%=1 THEN IF Code%=72 THEN :'Cursor rauf Zeile%=Zeile%-1 IF Zeile%Y1% THEN Zeile%=Y1% ENDIF IF Code%=75 THEN :'Cursor links Spalte%=Spalte%-1 IF Spalte%X1% THEN Spalte%=X1% ENDIF IF Code%=71 THEN :'Clear Home Zeile%=Y0%:Spalte%=X0% ENDIF IF Code%=28 THEN :'Return Spalte%=X0%:Zeile%=Zeile%+1 IF Zeile%>Y1% THEN Zeile%=Y1% ENDIF IF Code%=14 AND Spalte%<>X0% THEN :'Backspace Cut$= MID$(Tbuffer$,Xcrel%+Breite%*Ycrel%,Breite%-Xcrel%+1) MID$ (Tbuffer$,Xcrel%+Breite%*Ycrel%-1,Breite%-Xcrel%+2)=Cut$+" " Spalte%=Spalte%-1 LOCATE Zeile%,Spalte%: PRINT Cut$+" " ENDIF IF Code%=82 AND Spalte%<>X1% THEN :'Insert Cut$= MID$(Tbuffer$,Xcrel%+Breite%*Ycrel%,Breite%-Xcrel%) MID$ (Tbuffer$,Xcrel%+Breite%*Ycrel%,Breite%-Xcrel%+2)=" "+Cut$ LOCATE Zeile%,Spalte%: PRINT " "+Cut$ ENDIF IF Code%=83 THEN :'Delete Cut$= MID$(Tbuffer$,Xcrel%+Breite%*Ycrel%+1,Breite%-Xcrel%) MID$ (Tbuffer$,Xcrel%+Breite%*Ycrel%,Breite%-Xcrel%+2)=Cut$+" " LOCATE Zeile%,Spalte%: PRINT Cut$+" " ENDIF ENDIF UNTIL Code%=1 Text$=Tbuffer$ Cursor_Aus RETURN DEF PROC Hole_Tastaturcode Cd$="" WHILE Cd$="" Cd$= INKEY$ WEND Scan%=0 Code%= ASC( MID$(Cd$,2,1)) RESTORE Scancodes FOR N%=1 TO 10 READ Scancode% IF Code%=Scancode% THEN Scan%=1: EXIT NEXT -Scancodes DATA 1,14,28,71,72,75,77,80,82,83 IF Scan%=0 THEN Code%= ASC( MID$(Cd$,4,1)) RETURN DEF PROC Arbeitslaufwerk Nflops%= PEEK($4A7):'Anzahl der angeschlossenen Laufwerke Laufwerk$="A" IF Nflops%=2 THEN Entscheidung1("Arbeitslaufwerk","A","B") IF Wahl%=1 THEN Laufwerk$="A" IF Wahl%=2 THEN Laufwerk$="B" ENDIF RETURN DEF PROC Neue_Datei IF Datei_Geoeffnet%=Nein% THEN Oeffne_Datei EXIT ENDIF IF Datei_Geoeffnet%=Ja% THEN Text$=" Erst ge”ffnete|Datei schliessen!" Hinweis(Text$) ENDIF RETURN DEF PROC Datei_Oeffnen IF Datei_Geoeffnet%=Nein% THEN Oeffne_Datei OPEN "i",2, LEFT$(Pfad$,3)+Dateiname$+".NDX" I%=1 WHILE NOT EOF(2) INPUT #2,Typ%(I%) FOR N%=1 TO 2^Nfenster% INPUT #2,Verzweigung%(I%,N%) NEXT I%=I%+1 WEND CLOSE 2 EXIT ENDIF IF Datei_Geoeffnet%=Ja% THEN Text$=" Erst ge”ffnete|Datei schliessen!" Hinweis(Text$) ENDIF RETURN DEF PROC Oeffne_Datei Schirm_Sichern Zeige_Dateien PRINT Cursor_An PRINT "DATEI OEFFNEN" INPUT "DATEINAME:";Dateiname$ USING "a0-.u",Taste%L,8 Cursor_Aus Schirm_Restaurieren OPEN "R",1, LEFT$(Pfad$,3)+Dateiname$+".DAT",Satzlaenge% Datei_Geoeffnet%=Ja%:Indexdatei_Modifiziert%=Nein% FIELD 1,Satzlaenge% AS Datensatz$ RETURN DEF PROC Datei_Loeschen Schirm_Sichern Zeige_Dateien PRINT Cursor_An PRINT "WELCHE DATEI SOLL GELOESCHT WERDEN?" INPUT "DATEINAME:";Dname$ USING "a0-.u",Taste%L,8 Cursor_Aus Schirm_Restaurieren KILL LEFT$(Pfad$,3)+Dname$+".DAT" KILL LEFT$(Pfad$,3)+Dname$+".NDX" RETURN DEF PROC Datei_Umbenennen Schirm_Sichern Zeige_Dateien PRINT PRINT "DATEI UMBENENNEN" Cursor_An INPUT "ALTER DATEINAME:";Dnamealt$ USING "a0-.u",Taste%L,8 INPUT "NEUER DATEINAME:";Dnameneu$ USING "a0-.u",Taste%L,8 Cursor_Aus Schirm_Restaurieren NAME LEFT$(Pfad$,3)+Dnamealt$+".DAT" AS LEFT$(Pfad$,3)+Dnameneu$+".DAT" NAME LEFT$(Pfad$,3)+Dnamealt$+".NDX" AS LEFT$(Pfad$,3)+Dnameneu$+".NDX" RETURN DEF PROC Diskinfo Schirm_Sichern Zeige_Dateien PRINT "Zum weitermachen irgendeine Taste bet„tigen." REPEAT UNTIL INKEY$ <>"" Schirm_Restaurieren RETURN DEF PROC Zeige_Dateien Pfad$=Laufwerk$+":\*.DAT" PBOX 0,8*Aufl%,640,200*Aufl% IF FN Datei_Vorhanden%L(Pfad$)<>0 THEN LOCATE 2,0 FILES Pfad$ ELSE LOCATE 2,0 ENDIF PRINT "Freier Speicherplatz Laufwerk "+Laufwerk$+":"; FRE(Laufwerk$);" Bytes" RETURN DEF PROC Datei_Schliessen IF Datei_Geoeffnet%=Ja% THEN Invers_Ein LOCATE 22,1: PRINT SPACE$(78); LOCATE 24,1 PRINT "Aktuelle Datei: " LOCATE 24,30 PRINT "KARTE Nr.:"; PRINT USING "#####";Satznr% Invers_Aus L%= LOF(1) CLOSE 1 ENDIF IF Indexdatei_Modifiziert%=Ja% THEN OPEN "o",2, LEFT$(Pfad$,3)+Dateiname$+".NDX" FOR I%=1 TO L% PRINT #2,Typ%(I%) FOR N%=1 TO 2^Nfenster% PRINT #2,Verzweigung%(I%,N%) NEXT NEXT CLOSE 2 Indexdatei_Modifiziert%=Nein% PBOX 0,8*Aufl%,640,160*Aufl% ENDIF IF Datei_Geoeffnet%=Ja% THEN FOR I%=1 TO L% Typ%(I%)=0 FOR N%=1 TO 2^Nfenster% Verzweigung%(I%,N%)=0 NEXT NEXT Satznr%=1 ENDIF Datei_Geoeffnet%=Nein% RETURN DEF PROC Programminfo Text$=" TREE - CARD v.1.0|programmiert von Mario Srowig|untersttzt von Bernd Zeisberg" Hinweis(Text$) RETURN DEF PROC Systeminfo Schirm_Sichern PBOX 0,8*Aufl%,640,200*Aufl% LOCATE 2,0 PRINT "Anzahl der Diskettenstationen:"+ STR$(Nflops%) PRINT "Aktuelles Datenlaufwerk: ";Laufwerk$ IF Datei_Geoeffnet%=Ja% THEN PRINT "Zur Zeit ist die Datei "+Dateiname$+" im Zugriff" PRINT "Anzahl der editierten Karten:"; STR$( LOF(1)) ENDIF PRINT PRINT "Freier RAM-Speicher:"+ STR$( FRE("")) PRINT : PRINT "Zum weitermachen irgendeine Taste bet„tigen." REPEAT UNTIL INKEY$ <>"" Schirm_Restaurieren RETURN DEF PROC Auto_Routing REPEAT Fenster_Anwaehlen IF Byte%=0 THEN EXIT Satznralt%=Satznr% Satznr%=Verzweigung%(Satznr%,Byte%) IF Satznr%=0 THEN Meldung$="Es existiert noch|keine Verzweigung!|Verzweigung erzeugen?" Wahl1$="JA":Wahl2$="NEIN" Entscheidung1(Meldung$,Wahl1$,Wahl2$) IF Wahl%=1 THEN Auto_Routing%=Ja% Satznr%=Satznralt% Verzweigung_Erzeugen Auto_Routing%=Nein% ENDIF IF Wahl%=2 THEN Satznr%=Satznralt% ELSE Karte_Anzeigen ENDIF UNTIL Endlos%L RETURN DEF PROC Verzweigung_Erzeugen IF Auto_Routing%=Nein% THEN Fenster_Anwaehlen ENDIF Schirm_Sichern Text$="Wohin soll verzweigt werden?Bitte Kartennummer eingeben" Edit_Text(27,11,28,3,Text$,1,1) LOCATE 13,38:Cursor_An INPUT "";Nummer$ USING "0",Taste%L,4 Cursor_Aus Schirm_Restaurieren IF VAL(Nummer$)> LOF(1) THEN Text$="Karte existiert noch nicht!|Verzweigung nicht m”glich!" Hinweis(Text$) EXIT ENDIF Verzweigung%(Satznr%,Byte%)= VAL(Nummer$) Indexdatei_Modifiziert%=Ja% RETURN DEF PROC Verzweigung_Loeschen Fenster_Anwaehlen Verzweigung%(Satznr%,Byte%)=0 Indexdatei_Modifiziert%=Ja% RETURN DEF PROC Fenster_Anwaehlen FOR I%=1 TO Nfenster%(Typ%(Satznr%)) Bit%(I%)=0 NEXT MODE =3 FILL COLOR =1 Invers_Ein LOCATE 22,1: PRINT "Linke Maustaste = gewnschte Fenster selektieren / Rechte Maustaste = Weiter" Invers_Aus REPEAT MOUSEON Clear_Maus REPEAT UNTIL MOUSEBUT IF MOUSEBUT =1 THEN Xm%L= MOUSEX :Ym%L= MOUSEY Wahl%=0 FOR I%=1 TO Nfenster%(Typ%(Satznr%)) Xmin%L=(X%(I%,Typ%(Satznr%))-1)*8:Ymin%L=(Y%(I%,Typ%(Satznr%))-1)*8*Aufl% Xmax%L=Xmin%L+Breite%(I%,Typ%(Satznr%))*8:Ymax%L=Ymin%L+Hoehe%(I%,Typ%(Satznr%))*8*Aufl% IF Xm%L>Xmin%L AND Xm%LYmin%L AND Ym%L0 THEN Bit%(Wahl%)=Bit%(Wahl%) XOR 1 MOUSEOFF PBOX (X%(Wahl%,Typ%(Satznr%))-1)*8,(Y%(Wahl%,Typ%(Satznr%))-1)*8*Aufl%,Breite%(Wahl%,Typ%(Satznr%))*8,Hoehe%(Wahl%,Typ%(Satznr%))*8*Aufl% MOUSEON ENDIF ENDIF UNTIL MOUSEBUT =2 MOUSEOFF Byte%=0 FOR I%=1 TO Nfenster%(Typ%(Satznr%)) IF Bit%(I%)=1 THEN PBOX (X%(I%,Typ%(Satznr%))-1)*8,(Y%(I%,Typ%(Satznr%))-1)*8*Aufl%,Breite%(I%,Typ%(Satznr%))*8,Hoehe%(I%,Typ%(Satznr%))*8*Aufl% Byte%=Byte%+2^(I%-1) ENDIF NEXT MODE =1 FILL COLOR =0 Invers_Ein LOCATE 22,1: PRINT SPACE$(78); Invers_Aus RETURN DEF PROC Verzweigung_Zurueck Satznr%=Satznralt% Karte_Anzeigen RETURN DEF PROC Karte_Vor Satznr%=Satznr%+1 IF Satznr%> LOF(1) THEN Text$="Karte existiert noch nicht!" Hinweis(Text$) Satznr%=Satznr%-1 EXIT ENDIF Karte_Anzeigen RETURN DEF PROC Karte_Zurueck Satznr%=Satznr%-1 Karte_Anzeigen RETURN DEF PROC Karte_Anwaehlen Schirm_Sichern Text$="Welche Karte soll angezeigt werden? Bitte Kartennummer eingeben" Edit_Text(23,11,35,3,Text$,1,1) LOCATE 13,38:Cursor_An INPUT "";Nummer$ USING "0",Taste%L,4 Cursor_Aus Schirm_Restaurieren Satznrneu%= VAL(Nummer$) IF Satznrneu%> LOF(1) THEN Text$="Karte existiert noch nicht!" Hinweis(Text$) EXIT ENDIF Satznr%=Satznrneu% Karte_Anzeigen RETURN DEF PROC Leerkarte_Suchen IF Datei_Geoeffnet%=Ja% THEN Gefunden%=Nein% FOR I%=1 TO LOF(1) IF Typ%(I%)=0 THEN Satznr%=I% Karte_Anzeigen Gefunden%=Ja% EXIT ENDIF NEXT IF Gefunden%=Nein% THEN Text$="Es wurde keine|Leerkarte gefunden!" Hinweis(Text$) ENDIF ENDIF IF Datei_Geoeffnet%=Nein% THEN Text$="Es muž erst eine|Datei ge”ffnet werden!" Hinweis(Text$) ENDIF RETURN DEF PROC Karte_Anzeigen IF Datei_Geoeffnet%=Ja% THEN IF Satznr%=0 THEN Satznr%=1 Invers_Ein LOCATE 22,1: PRINT SPACE$(78); LOCATE 24,1 PRINT "Aktuelle Datei: ";Dateiname$ LOCATE 24,30 PRINT "KARTE Nr.:"; PRINT USING "#####";Satznr% Invers_Aus GET 1,Satznr% Felder$=Datensatz$ Letzter_Satz%L= LOF(1) Edit_Aus%=Ja%:Rahmen%=Ja% IF Satznr%<=Letzter_Satz%L THEN Pos%=1 FOR I%=1 TO Nfenster% Text$(I%)= MID$(Felder$,Pos%,Feldlaenge%(I%,Typ%(Satznr%))) Pos%=Pos%+Feldlaenge%(I%,Typ%(Satznr%)) NEXT ELSE FOR I%=1 TO Nfenster% Text$(I%)= SPACE$(Feldlaenge%(I%,Typ%(Satznr%))) NEXT ENDIF PBOX 0,8*Aufl%,640,160*Aufl% FOR I%=1 TO Nfenster% Edit_Text(X%(I%,Typ%(Satznr%)),Y%(I%,Typ%(Satznr%)),Breite%(I%,Typ%(Satznr%)),Hoehe%(I%,Typ%(Satznr%)),Text$(I%),Rahmen%,Edit_Aus%) NEXT ENDIF IF Datei_Geoeffnet%=Nein% THEN Text$="Es muž erst eine|Datei ge”ffnet werden!" Hinweis(Text$) ENDIF RETURN DEF PROC Aktuelle_Karte_Editieren IF Typ%(Satznr%)=0 THEN Kartentyp_Waehlen ENDIF Karte_Anzeigen Invers_Ein LOCATE 22,1: PRINT "Zum n„chsten Feld mit ESC - Taste / Beim letzten Feld Abbruch mit ESC - Taste" Invers_Aus IF Datei_Geoeffnet%=Ja% THEN Edit_Aus%=Nein%:Rahmen%=Ja% FOR I%=1 TO Nfenster%(Typ%(Satznr%)) Edit_Text(X%(I%,Typ%(Satznr%)),Y%(I%,Typ%(Satznr%)),Breite%(I%,Typ%(Satznr%)),Hoehe%(I%,Typ%(Satznr%)),Text$(I%),Rahmen%,Edit_Aus%) NEXT Felder$="" FOR I%=1 TO Nfenster%(Typ%(Satznr%)) Felder$=Felder$+Text$(I%) NEXT LSET Datensatz$=Felder$ PUT 1,Satznr% ENDIF IF Datei_Geoeffnet%=Nein% THEN Text$="Es muž erst eine|Datei ge”ffnet werden!" Hinweis(Text$) ENDIF Invers_Ein LOCATE 22,1: PRINT SPACE$(78); Invers_Aus RETURN DEF PROC Aktuelle_Karte_Loeschen IF Datei_Geoeffnet%=Ja% THEN Felder$= SPACE$(Satzlaenge%) Typ%(Satznr%)=0 LSET Datensatz$=Felder$ PUT 1,Satznr% Karte_Anzeigen ENDIF IF Datei_Geoeffnet%=Nein% THEN Text$="Es muž erst eine|Datei ge”ffnet werden!" Hinweis(Text$) ENDIF RETURN DEF PROC Naechste_Karte_Editieren IF Datei_Geoeffnet%=Ja% THEN Satznr%= LOF(1)+1 IF Satznr%>Nkarten%L THEN Satznr%=Satznr%-1 Text$="Die maximale Kartenanzahl|wurde berschritten!" Hinweis(Text$) EXIT ENDIF Kartentyp_Waehlen Karte_Anzeigen ENDIF Aktuelle_Karte_Editieren RETURN DEF PROC Kartentyp_Waehlen Indexdatei_Modifiziert%=Ja% Invers_Ein LOCATE 22,1: PRINT "Bitte mit linker Maustaste den gewnschten Kartentyp selektieren" Invers_Aus Schirm_Sichern X%=20:Y%=10*Aufl% PBOX 0,8*Aufl%,640,160*Aufl% FOR I%=1 TO Ntyp% FOR J%=1 TO Nfenster%(I%) BOX X%,Y%,84,25*Aufl% BOX X%(J%,I%)+X%,Y%+Y%(J%,I%)*Aufl%,Breite%(J%,I%),Hoehe%(J%,I%)*Aufl% NEXT Y%=Y%+30*Aufl% IF I%=4 THEN Y%=10*Aufl%:X%=X%+100 NEXT MOUSEON Typ%(Satznr%)=0 REPEAT REPEAT UNTIL MOUSEBUT Xm%L= MOUSEX :Ym%L= MOUSEY :X%=20:Y%=10*Aufl% FOR I%=1 TO Ntyp% FOR J%=1 TO Nfenster%(I%) IF Xm%L>X% AND Ym%L>Y% AND Xm%L0 MOUSEOFF Schirm_Restaurieren RETURN DEF PROC Exit_Programm Datei_Schliessen CLEAR 65536,4096 END RETURN DEF FN Datei_Vorhanden%L(Pfad$) LOCAL Vorhanden%=0 OPEN "F",3,Pfad$,0 Vorhanden%= NOT EOF(3) CLOSE 3 RETURN Vorhanden% DEF PROC Schirm_Sichern BITBLT 0,0,640,200*Aufl% TO Schirmpuffer%L RETURN DEF PROC Schirm_Restaurieren BITBLT Schirmpuffer%L TO 0,0,640,200*Aufl% RETURN DEF PROC Hinweis(Meldung$) MOUSEON FORM_ALERT (1,"[1]["+Meldung$+"][OK]",Wahl%) MOUSEOFF RETURN DEF PROC Entscheidung1(Meldung$,Wahl1$,Wahl2$) MOUSEON FORM_ALERT (1,"[2]["+Meldung$+"]["+Wahl1$+"|"+Wahl2$+"]",Wahl%) MOUSEOFF RETURN DEF PROC Cursor_An PRINT CHR$(27);"e"; RETURN DEF PROC Cursor_Aus PRINT CHR$(27);"f"; RETURN DEF PROC Clear_Maus REPEAT UNTIL MOUSEBUT =0 RETURN DEF PROC Invers_Ein PRINT CHR$(27);"p"; RETURN DEF PROC Invers_Aus PRINT CHR$(27);"q"; RETURN