Σε αυτή την αναθεώρηση διορθώθηκαν όλα τα προβλήματα των προηγούμενων αναθεωρήσεων. Επιπλέον μπήκε στο αρχείο M2000language.exe το αρχείο info.gsb το οποίο σώνεται στο φάκελο του προγράμματος
Μόλις εγκαταστήσουμε τη γλώσσα (αν έχουμε ήδη εγκαταστήσει προηγούμενη έκδοση κάνουμε απεγκατάσταση πρώτα), θα ανοίξει ο μεταφραστής και τότε δίνουμε τα παρακάτω:
dir appdir$
load info
Η πρώτη εντολή κάνειει το τρέχον κατάλογο να είναι ο κατάλογος της εφαρμογής (όπου βρίσκεται το m2000.exe). Από εκεί φορτώνουμε το info (info.gsb) το οποίο εκτελεί άμεσα ένα τμήμα και μας δείχνει βασικές πληροφορίες. Αμέσως πατάμε το F1 (έχει προγραμματιστεί από το πρόγραμμα που φορτώσαμε) και σώνεται το πρόγραμμα στο φάκελο του χρήστη (πάμε σε αυτόν με dir user, αλλά ήδη έχει γίνει ). Οποιαδήποτε άλλη φορά θα γράφουμε απλά load info και θα φορτώνει.
Στο πρόγραμμα info.gsb υπάρχουν αρκετά τμήματα (είναι όλα στα αγγλικά), τα οποία μπορούμε να τρέξουμε. Το meditor είναι ένας διορθωτής προγραμμάτων Μ2000 σε παραθυρικό περιβάλλον. (δεν δείχνει όμως τη βοήθεια όπως το κάνει ο διορθωτής της κονσόλας-ίσως αναβαθμίσω το meditor, γιατί γίνεται και αυτός να δείχνει την βοήθεια)
Το δεύτερο μενού (Edit) παρέχει την δυνατότητα να αλλάζουμε από tab σε διαστήματα τον τρόπο που θα βάζει εσοχές. Επιπλέον όταν πατάμε το F10 και γίνεται αλλαγή προβολής από κανονική σε προβολή με μη φανερούς χαρακτήρες, και το ανάποδο, τότε παίρνουμε μήνυμα στην φόρμα και όταν ανοίξουμε το Edit τότε και αυτό ενημερώνεται.
Επιπλέον τώρα όταν ανοίγει η φόρμα για να φορτώσουμε ένα αρχείο μπορούμε να περιηγηθούμε σε όλους τους δίσκους (ακόμα και αυτούς που έχουμε στο τοπικό δίκτυο).
Παρακάτω είναι το πρόγραμμα.
Μόλις εγκαταστήσουμε τη γλώσσα (αν έχουμε ήδη εγκαταστήσει προηγούμενη έκδοση κάνουμε απεγκατάσταση πρώτα), θα ανοίξει ο μεταφραστής και τότε δίνουμε τα παρακάτω:
dir appdir$
load info
Η πρώτη εντολή κάνειει το τρέχον κατάλογο να είναι ο κατάλογος της εφαρμογής (όπου βρίσκεται το m2000.exe). Από εκεί φορτώνουμε το info (info.gsb) το οποίο εκτελεί άμεσα ένα τμήμα και μας δείχνει βασικές πληροφορίες. Αμέσως πατάμε το F1 (έχει προγραμματιστεί από το πρόγραμμα που φορτώσαμε) και σώνεται το πρόγραμμα στο φάκελο του χρήστη (πάμε σε αυτόν με dir user, αλλά ήδη έχει γίνει ). Οποιαδήποτε άλλη φορά θα γράφουμε απλά load info και θα φορτώνει.
Στο πρόγραμμα info.gsb υπάρχουν αρκετά τμήματα (είναι όλα στα αγγλικά), τα οποία μπορούμε να τρέξουμε. Το meditor είναι ένας διορθωτής προγραμμάτων Μ2000 σε παραθυρικό περιβάλλον. (δεν δείχνει όμως τη βοήθεια όπως το κάνει ο διορθωτής της κονσόλας-ίσως αναβαθμίσω το meditor, γιατί γίνεται και αυτός να δείχνει την βοήθεια)
Το δεύτερο μενού (Edit) παρέχει την δυνατότητα να αλλάζουμε από tab σε διαστήματα τον τρόπο που θα βάζει εσοχές. Επιπλέον όταν πατάμε το F10 και γίνεται αλλαγή προβολής από κανονική σε προβολή με μη φανερούς χαρακτήρες, και το ανάποδο, τότε παίρνουμε μήνυμα στην φόρμα και όταν ανοίξουμε το Edit τότε και αυτό ενημερώνεται.
Επιπλέον τώρα όταν ανοίγει η φόρμα για να φορτώσουμε ένα αρχείο μπορούμε να περιηγηθούμε σε όλους τους δίσκους (ακόμα και αυτούς που έχουμε στο τοπικό δίκτυο).
Παρακάτω είναι το πρόγραμμα.
\\ notepad for M2000 programs (gsb files) Show Clear \\ Clear all variables/objects Flush \\ Empty the stack Title$="M2000 Pad" Dir User Title Title$, 0 Declare NotePad Form Declare Pad EditBox Form NotePad Declare File1 Combobox Form NotePad Declare Edit1 Combobox Form NotePad Declare Help1 Combobox Form NotePad Declare Inform1 Button Form NotePad Method Inform1, "Colors", 15, #FFA000 With Inform1, "Locked", true Method Pad, "FontAttr", "Tahoma", 12, true ' size=12, bold=true With Pad, "NoWrap", True, "SetM2000", True, "SelLength" as SelLength With File1,"label","File", "listtext" As list$, "list" As list$() ' With Edit1,"label","Edit", "Mark", Color(255,100,0) With Help1,"label","Help", "Mark", Color(255,100,0) With NotePad,"UseIcon", True, "UseReverse", True With NotePad, "Title" As Caption$, "Visible" As Visible, "TitleHeight" As tHeight, "Sizable", True \\ Call MakeStandardInfo, after setting Sizable to true to enable contol box's maximize button. Method NotePad,"MakeStandardInfo", 1 With Pad, "Text" As Pad.Text$, "NoColor", False, "ShowAlways", True, "UseTab", True, "tabwidth", 6 Def TitleStr$(a$)=ucase$(left$(a$,1))+mid$(a$,2) Filename$=Dir$+"Untitled.gsb" Caption$=TitleStr$(File.Name$(Filename$)) +" - M2000 Pad" Method NotePad,"move", 2000, 4000, 8000, 4000 Layer NotePad {Cls #FFA000} With File1,"MenuStyle", True, "MenuWidth", 4000 With Edit1,"MenuStyle", True, "MenuWidth", 4000 With Help1,"MenuStyle", True, "MenuWidth", 4000 With File1, "MenuEnabled" As mEnable() For This { mi$="MenuItem" \\ is a temporary variable only for For This Block Method File1, mi$,"Open",True Method File1, mi$,"Save",True Method File1, mi$,"" \\ only a line here Method File1, mi$,"Close",True Method File1, mi$,"Quit",True Rem Method File1, "Transparent" With File1, "MenuGroup","This" Method Edit1, mi$,"Cut",True Method Edit1, mi$,"Copy",True Method Edit1, mi$,"Paste",True Method Edit1, mi$,"" Method Edit1, mi$,"Less Indent",True Method Edit1, mi$,"More Indent",True Method Edit1, mi$,"" Method Edit1,"MenuRadio","Tabs for Indent",True,True Method Edit1,"MenuRadio","Spaces for Indent",True,false Method Edit1, mi$,"" Method Edit1, mi$,"Show Hidden Characters", True, True Rem Method Edit1, "Transparent" With Edit1, "MenuGroup","This" Method Help1, mi$,"About",True Rem Method Help1, "Transparent" With Help1, "MenuGroup","This" } Def par_Status as boolean=false, old_status old_status=par_Status With Edit1,"ListSelected" as Edit1.Selected(), "MenuEnabled" As Edit1.Enabled() With Pad, "showparagraph" as par_Status Document BackUp$="\\Write something..." Def ok as boolean Pad.Text$=BackUp$ Function Notepad.Resize { Layer NotePad { Cls Color(255, 160, 0) ,0} With NotePad, "Width" As NP.Width, "Height" As NP.Height, "TitleHeight" As tHeight tHeight1=theight*2 Method File1,"move", twipsX*2, tHeight, twipsX*80, tHeight Method Edit1,"move", twipsX*2+twipsX*80, tHeight, twipsX*80, tHeight Method Help1,"move", twipsX*2+twipsX*160, tHeight, twipsX*80, tHeight Method Inform1,"move", twipsX*2+twipsX*240, tHeight, twipsX*160, tHeight If NP.height>2000 Then { Method Pad,"move", twipsX*2, tHeight1, NP.Width-twipsX*5, NP.Height-tHeight1-twipsx*3 With Pad, "NoWrap" As NoWrap If Not NoWrap Then Method Pad,"Resize" } } Function Pad.Inform { Read New L, P if old_status<>par_status then With Inform1, "Caption",if$(par_status->"Hidden", "No Hidden") old_status=par_status else With Inform1, "Caption", format$("{0}-{1}", L,P) end if Method Pad,"Show" }
Function SetTabs { With Pad, "UseTab", True,"tabwidth",6 With Inform1, "Caption","Set Tabs" Method Pad,"Show" } Function SetSpaces { With Pad, "SpaceIndent", 6 With Inform1, "Caption","Set Spaces" Method Pad,"Show" } Function ChangeHidden { Edit1.Selected(10)=not par_Status Method Pad,"PressKey", 121, 0 ' 121=vbkeyF10 old_status=par_status With Inform1, "Caption",if$(Edit1.Selected(10)->"Hidden", "No Hidden") Method Pad,"Show" } Function Edit1.OpenMenu { Local X X=SelLength>0 Edit1.Enabled(0)=X Edit1.Enabled(1)=X Edit1.Selected(10)=par_Status With Inform1, "Caption",if$(Edit1.Selected(10)->"Hidden", "No Hidden") } Function Edit1.MenuChecked { Read New RadioIndex If RadioIndex=7 then Call Local SetTabs() else.If RadioIndex=8 then Call Local SetSpaces() else.If RadioIndex=10 then Call Local ChangeHidden() else With Inform1, "Caption","??" Method Pad,"Show" end if } Function Edit1.DblClick { Read New Edit1index Select Case Edit1index Case 0 Method Pad,"mn1sub" : Method Pad,"Resize" Case 1 Method Pad,"mn2sub" Case 2 Method Pad, "mn3sub" : Method Pad,"GetFocus" : Method Pad,"Resize" Case 4 Method Pad,"PressKey", 9, 1 Case 5 Method Pad,"PressKey", 9, 0 Case 7 Call Local SetTabs() Case 8 Call Local SetSpaces() Case 10 Call Local ChangeHidden() End Select } Function Pad.PopUp { Read Local X, Y Method Pad,"PopUpMenu", "",X , Y } Function File1.DblClick { Read New File1index Local cont, cont2, f$, NL$={ } File1index++ \\ Because we want some jumps..we use On Goto \\ on Goto need here a block { On File1index Goto Open1, Save1, ExitNow, Save2, Unload Exitnow: Exit Open1: If Pad.Text$<>BackUp$ Then { If ask("Save Changes first?",Title$)=1 Then Goto Save1 } Layer NotePad { \\Using "**" we can go up to drives. Try ok { Open.file filename$,"**","Load M2000 (Gsb) File","gsb" } if not ok then push "" : Dir User } Method Pad,"GetFocus" Read f$ If f$<>"" Then Filename$=f$ If exist(F$) then { Clear BackUp$ Load.Doc BackUp$, f$ Caption$=TitleStr$(File.Name$(Filename$)) +" - M2000 Pad" \\ set the current directory dir file.path$(Filename$) Pad.Text$=BackUp$ } else Pad.text$="": Clear BackUp$ Method Pad, "Resize" End If Exit Save1: Layer NotePad { try ok { Save.As Filename$,"**","Save M2000 File","gsb" } if not ok then Push "" : Dir User } if not cont2 then Method Pad,"GetFocus" Read f$ If f$="" Then Exit If lcase$(file.type$(f$))<>"gsb" then f$=f$+".gsb" If Exist(f$) Then If Ask(NL$+"Overwrite"+NL$+f$,Title$)<>1 Then Exit Try ok { Clear BackUp$ BackUp$=Pad.Text$ Save.Doc BackUp$, f$ filename$=f$ Caption$=TitleStr$(File.Name$(Filename$)) +" - M2000 Pad" } If ok else beep If not cont then Exit Save2: cont=True If Pad.Text$<>BackUp$ Then { If ask("Save Changes?",Title$)=1 Then Goto Save1 } Clear BackUp$ Pad.Text$="" If Cont2 then Method NotePad, "CloseNow" Else FileName$=Dir$+"Untitled.gsb" Caption$=TitleStr$(File.Name$(Filename$)) +" - M2000 Pad" Method Pad, "Resize" End If Exit Unload: Cont2=True : Goto Save2 } } Function Help1.DblClick { Local A, info$ Info$={ This is an example of a notepad for M2000 Programs written in M2000 and run in M2000 Environment } A=Ask(info$,Title$,"","") } Function Notepad.InfoClick { Read New X If X=0 then Call Local Help1.DblClick() } Call Local Notepad.Resize() \\ make this as the default control (get focus) With Pad,"Default",True \\ open As modal Method NotePad,"Show", 1 Declare Pad Nothing Declare NotePad Nothing Print "Done"
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
You can feel free to write any suggestion, or idea on the subject.