I'm having some problems with formatting text areas. I'm trying to get the program to color certain words that appear in the text area for a programming text editor. Here's the code.
P.S. you'll need this userlib in order to run the program http://www.blitzbasic.com/codearcs/codearcs.php?code=1227.
Global Mainwin=CreateWindow("Mainwin",0,100,640,480,Desktop(),3) Global SaveButt=CreateButton("Save",0,0,25,25,Mainwin,1) SetGadgetLayout(SaveButt,1,0,1,0) Global OpenButt=CreateButton("Open",25,0,25,25,Mainwin,1) SetGadgetLayout(OpenButt,1,0,1,0) Global MainArea=CreateTextArea(0,23,631,423,Mainwin,0) SetTextAreaColor(MainArea,243,243,243,True) tmpfont=LoadFont("Arial",14) SetTextAreaFont MainArea,tmpfont SetGadgetLayout(MainArea,1,1,1,1) HotKeyEvent(28,0,$FFFF) Repeat event=0 event=WaitEvent() Select event Case $803 Exit Case $FFFF AddTabs(MainArea) Case $401 Select EventSource() Case MainArea ;Stop LockTextArea mainarea FormatTextAreaText(mainarea,1,1,1,0,0) UnlockTextArea mainarea ColorText(MainArea," Xor ; And ; Or ; Not ",255,0,0) End Select Default End Select Forever HotKeyEvent(28,0,0) Function colortext(TextArea,ColorString$,colorr,colorg,colorb) Strng$=TextAreaText$(textarea) While Instr(ColorString,";",LastFindExt+1) Strng$=TextAreaText$(textarea) NextHighLight$=Mid$(ColorString,LastFindExt+1,Instr(ColorString,";",LastFindExt+1)+LastFindExt-1) LastFindInt=0 While Instr(Lower$(strng),Lower$(NextHighLight),LastFindInt+1) Strng$=TextAreaText$(textarea) LockTextArea mainarea FormatTextAreaText(TextArea,ColorR,ColorG,ColorB,0,Instr(Lower$(strng),Lower$(NextHighLight),LastFindInt+1)-1,Len(NextHighLight),1) UnlockTextArea mainarea LastFindInt=Instr(Strng,nexthighlight,LastFindInt+1) Wend LastFindExt=Instr(ColorString,";",LastFindExt+1) Wend End Function Function AddTabs(TextArea) linenum=TextAreaCursor(TextArea,2) lineabove$=TextAreaText(TextArea,linenum-1,linenum,2) I=1 While (Mid$(lineabove,I,1) = " ") And (I < Len(lineabove)) I=I+1 Wend For J=1 To I-1 ret$=ret$+" " Next SetTextAreaText(TextArea,ret,TextAreaCursor(MainArea,1),0,1) For J=1 To I-1 keypress(39,0,0,0) keypress(39,0,2,0) Next End Function
P.S. you'll need this userlib in order to run the program http://www.blitzbasic.com/codearcs/codearcs.php?code=1227.