Danke. Es hat funktioniert.
Wie kann ich es dann proggen, dass Procedure und EndProcedure geHighlightet wird?
Code: Alles auswählen
XIncludeFile "Scintilla.pbi"
Enumeration ; Menuitems
#mnuFileNew
#mnuFileOpen
#mnuFileSave
#mnuFileQuit
#mnuEditUndo
#mnuEditCut
#mnuEditCopy
#mnuEditPaste
#mnuEditDelete
#mnuEditAll
#mnuFormatWrapMode
#mnuFormatLineNumbers
#mnuFormatFont
#mnuHelpHelp
#mnuHelpAbout
EndEnumeration
Define.Scintilla *Edit ; Objectvariable für OOP-Interface definieren
Define.s File, MyFontName
Define.l Font, MyFontSize, MyColor
MyFontName = "Courier New"
MyFontSize = 10
File = ProgramParameter()
#PB_Window_Flags = #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget
If OpenWindow(0, #PB_Ignore, 0, 640, 480, "Simple Editor", #PB_Window_Flags) = #False : End : EndIf
SmartWindowRefresh(0, #True)
RemoveKeyboardShortcut(0, #PB_Shortcut_All) ; Ansonsten funktioniert TAB nicht!
If CreateGadgetList(WindowID(0))
If CreateMenu(0, WindowID(0))
MenuTitle("&Datei")
MenuItem(#mnuFileNew, "Neu")
MenuBar()
MenuItem(#mnuFileOpen, "Öffnen")
MenuItem(#mnuFileSave, "Speichern")
MenuBar()
MenuItem(#mnuFileQuit, "Beenden")
MenuTitle("&Bearbeiten")
MenuItem(#mnuEditUndo, "Rückgängig")
MenuBar()
MenuItem(#mnuEditCut, "Ausschneiden")
MenuItem(#mnuEditCopy, "Kopieren")
MenuItem(#mnuEditPaste, "Einfügen")
MenuItem(#mnuEditDelete, "Löschen")
MenuBar()
MenuItem(#mnuEditAll, "Alles markieren")
MenuTitle("&Format")
MenuItem(#mnuFormatWrapMode, "Zeilenumbruch")
MenuItem(#mnuFormatLineNumbers, "Zeilennummer")
MenuBar()
MenuItem(#mnuFormatFont, "Schriftart ...")
MenuTitle("&?")
MenuItem(#mnuHelpHelp, "Hilfe")
MenuItem(#mnuHelpAbout, "Über")
EndIf
ScintillaGadget(0, 0, 0, 0, 0)
; wir verwenden das Interface
*Edit = GetGadgetAttribute(0, #PB_SCINTILA_INTERFACE)
*Edit\SCI_USEPOPUP(#True); Popupmenü aktivieren (engl.)
*Edit\SCI_SETMARGINTYPEN(1, #STYLE_LINENUMBER) ; Margin 1 für Zeilennummern
*Edit\SCI_STYLESETFONT(0, @MyFontName) ; Standardfont
*Edit\SCI_STYLESETSIZE(0, MyFontSize) ; Standardgröße
If File And FileSize(File) > 0 ; wurde Datei übergeben und Existiert?
*Edit\Load(File)
SetWindowTitle(0, "Simple Editor - " + GetFilePart(File))
EndIf
EndIf
Repeat
SyntaxHighlightingAll(0,"Procedure,EndProcedure",",",RGB(0,255,0),RGB(0,0,0),13,"Courier New",#CFM_BOLD)
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_SizeWindow
ResizeGadget(0, 0, 0, WindowWidth(0), WindowHeight(0) - MenuHeight())
Case #PB_Event_Menu
Select EventMenu()
Case #mnuFileNew
; Abfrage Speichern usw. fehlt hier!
*Edit\SCI_CLEARALL()
*Edit\SCI_EMPTYUNDOBUFFER()
*Edit\SCI_SETSAVEPOINT()
SetWindowTitle(0, "Simple Editor")
Case #mnuFileOpen
; Abfrage Speichern usw. fehlt hier!
File = OpenFileRequester("Textdatei öffnen", "*.txt", "Text (*.txt)|*.txt", 0)
If File
*Edit\Load(File)
*Edit\SCI_EMPTYUNDOBUFFER()
*Edit\SCI_SETSAVEPOINT()
SetWindowTitle(0, "Simple Editor - " + GetFilePart(File))
EndIf
Case #mnuFileSave
File = SaveFileRequester("Textdatei speichern", "*.txt", "Text (*.txt)|*.txt", 0)
If File
*Edit\Save(File)
*Edit\SCI_SETSAVEPOINT()
SetWindowTitle(0, "Simple Editor - " + GetFilePart(File))
EndIf
Case #mnuFileQuit
; Abfrage Speichern usw. fehlt hier!
Break
Case #mnuEditUndo
*Edit\SCI_UNDO()
Case #mnuEditCut
*Edit\SCI_CUT()
Case #mnuEditCopy
*Edit\SCI_COPY()
Case #mnuEditPaste
*Edit\SCI_PASTE()
Case #mnuEditDelete
*Edit\SCI_CLEAR()
Case #mnuEditAll
*Edit\SCI_SELECTALL()
Case #mnuFormatWrapMode
If GetMenuItemState(0, #mnuFormatWrapMode)
SetMenuItemState(0, #mnuFormatWrapMode, #False)
*Edit\SCI_SETWRAPMODE(#False)
Else
SetMenuItemState(0, #mnuFormatWrapMode, #True)
*Edit\SCI_SETWRAPMODE(#True)
EndIf
Case #mnuFormatLineNumbers
If GetMenuItemState(0, #mnuFormatLineNumbers)
SetMenuItemState(0, #mnuFormatLineNumbers, #False)
*Edit\SCI_SETMARGINWIDTHN(1, 0)
Else
SetMenuItemState(0, #mnuFormatLineNumbers, #True)
*Edit\SCI_SETMARGINWIDTHN(1, 75)
EndIf
Case #mnuFormatFont
Font = FontRequester(MyFontName, MyFontSize, #PB_FontRequester_Effects, MyColor)
If Font
MyFontName = SelectedFontName()
MyFontSize = SelectedFontSize()
MyColor = SelectedFontColor()
*Edit\SetStyle(0, SelectedFontColor(), $FFFFFF, MyFontSize, MyFontName)
If SelectedFontStyle() & #PB_Font_Bold
*Edit\SCI_STYLESETBOLD(0, #True)
EndIf
If SelectedFontStyle() & #PB_Font_Italic
*Edit\SCI_STYLESETITALIC(0, #True)
EndIf
If SelectedFontStyle() & #PB_Font_Underline
*Edit\SCI_STYLESETUNDERLINE(0, #True)
EndIf
EndIf
Case #mnuHelpHelp
MessageRequester("Hilfe", "Aktuelles Wort: " + *Edit\GetCurrentWord())
SetActiveGadget(0)
Case #mnuHelpAbout
MessageRequester("Über SimpleEditor", "Demo der Scintilla Lib!" + #LF$ + "© 2006 by TS-Soft")
SetActiveGadget(0)
EndSelect
EndSelect
ForEver
Der code hier funktioniert aber noch nicht mit SyntaxHighlighting. Woran kann das liegen?