Seite 3 von 4
Verfasst: 05.06.2007 14:33
von PureBasic4.0
ts-soft hat geschrieben:Benutzt die Highlight.dll aus dem PureBasic SDK
Jetzt mal für totale Noobs: Was ist ne PB SDK?
ts-soft hat geschrieben:ür einen Ersatzeditor findeste ein Beispiel im engl. Forum, wie oft noch?
Poste mal bitte den Link - mit der engl. SuFu bin ich noch weniger vertraut als mit der deutschen.
Verfasst: 05.06.2007 14:40
von ts-soft
>> Jetzt mal für totale Noobs: Was ist ne PB SDK?
Befindet sich nach der Installation von PureBasic auf deiner Festplatte
>> Poste mal bitte den Link - mit der engl. SuFu bin ich noch weniger vertraut als mit der deutschen
Dann lernste es, hab keine Zeit ständig für andere zu suchen
Verfasst: 05.06.2007 14:53
von edel
Hier ein ganz simples Beispiel :
Code: Alles auswählen
#mein_style1 = 1
#mein_style2 = 2
#mein_style3 = 3
Procedure sci_cb(hWnd,id,*scin.SCNOTIFICATION,lParam)
Protected endstyle = ScintillaSendMessage(id,#SCI_GETENDSTYLED,0,0)
Protected line = ScintillaSendMessage(id,#SCI_LINEFROMPOSITION,endstyle,0)
Protected start_pos = ScintillaSendMessage(id,#SCI_POSITIONFROMLINE,line,0)
Protected end_pos = *scin\position
Protected first_char = 0
While start_pos < end_pos
first_char = ScintillaSendMessage(id,#SCI_GETCHARAT,start_pos,0)
ScintillaSendMessage(id,#SCI_STARTSTYLING,start_pos,31)
Select first_char
Case '+','*','-','/'
ScintillaSendMessage(id,#SCI_SETSTYLING,1,#mein_style1)
Case '(',')'
ScintillaSendMessage(id,#SCI_SETSTYLING,1,#mein_style2)
Case '0' To '9'
ScintillaSendMessage(id,#SCI_SETSTYLING,1,#mein_style3)
Default
ScintillaSendMessage(id,#SCI_SETSTYLING,1,#STYLE_DEFAULT)
EndSelect
start_pos + 1
Wend
EndProcedure
InitScintilla("scilexer.dll")
hWnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,320,240,"leer")
CreateGadgetList(hWnd)
ScintillaGadget(0,0,0,320,240,0,@sci_cb())
ScintillaSendMessage(0,#SCI_STYLESETFORE,#STYLE_DEFAULT, #Black)
ScintillaSendMessage(0,#SCI_STYLESETBACK,#STYLE_DEFAULT, #White)
ScintillaSendMessage(0,#SCI_STYLECLEARALL,0,0)
ScintillaSendMessage(0,#SCI_STYLESETFORE,#mein_style1,$0000FF)
ScintillaSendMessage(0,#SCI_STYLESETFORE,#mein_style2,$FF0000)
ScintillaSendMessage(0,#SCI_STYLESETBACK,#mein_style2,$C0C0C0)
ScintillaSendMessage(0,#SCI_STYLESETFORE,#mein_style3,$00FF00)
SetGadgetText(0,"a = 1+1*(1/1)-1")
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
Wenn du dich jetzt nicht ganz so doof anstellst, kommst du mit
der Dokumentation von Scintilla weiter.
Verfasst: 05.06.2007 17:44
von PureBasic4.0
@edel: Ich glaube, dein Code ist für PB3.94
@ts-soft: achso, ich dachte du hast den link schon...
Verfasst: 05.06.2007 17:59
von ts-soft
>> @edel: Ich glaube, dein Code ist für PB3.94
Nein, ganz offentsichlich für PB4.10
Vielleicht mußte den Namen der DLL noch anpassen (Scintilla.dll)
Verfasst: 06.06.2007 16:34
von PureBasic4.0
@ts-soft: Meinst du mit Beispielcode für'n Ersatzeditor die Sources von jaPBe, oder welche meinst du?
@all: Ich denke, alleine schon ein EditorGadget, in dem nichts steht, ist mit SyntaxHighlighting zu langsam. Das Tippen ist ungefähr so, wie auf nem Atari. Buchstabe eingegeben, 1 sek. gewartet und dann steht's auf'm Monitor.
Verfasst: 09.06.2007 18:36
von ts-soft
Verfasst: 09.06.2007 18:47
von edel
PureBasic4.0 hat geschrieben:@all: Ich denke, alleine schon ein EditorGadget, in dem nichts steht, ist mit SyntaxHighlighting zu langsam. Das Tippen ist ungefähr so, wie auf nem Atari. Buchstabe eingegeben, 1 sek. gewartet und dann steht's auf'm Monitor.
Das liegt eher an deinem Wissensstand. Auch in einem
EditorGadget bzw RichEdit geht das sehr schnell. Wer
allerdings nur mit UserLibs rumbasteln kann, braucht
da wohl noch eine Weile.
Verfasst: 09.06.2007 21:21
von PureBasic4.0
@ts-soft: Danke für den Link. Jetzt brauche ich nur noch die Scintilla_res.pb und die Scintilla_Macro.pbi. Woher bekomme ich die jetzt? Ich benutze die Scintilla.pbi Includefile. Soll ich die SciLexer.pbi auch noch hinzufügen oder brauche ich die nicht?
Verfasst: 09.06.2007 21:29
von ts-soft
Der Code ist für PB4.10, da brauchste nur die scilexer.pbi, link ist im source
angegeben.