Basic Univers
Structure SYNTAXHIGHLIGHT
keyword.s
effect.l
color.l
EndStructure
NewList syntax.SYNTAXHIGHLIGHT()
Procedure.b Syntax_Clear()
ClearList(syntax())
EndProcedure
Procedure.b Syntax_Add(keyword.s, color.l, effect.l)
If AddElement(syntax())
syntax()\keyword = keyword
syntax()\effect = effect
syntax()\color = color
EndIf
EndProcedure
Procedure.l Syntax_Apply(gID.l)
hGadget = GadgetID(gID)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_COLOR|#CFM_BOLD|#CFM_ITALIC|#CFM_UNDERLINE
search.FINDTEXTEX
search\chrg\cpMax = Len(GetGadgetText(gID))
SendMessage_(hGadget, #EM_HIDESELECTION, #True, #Null)
ForEach syntax()
search\chrg\cpMin = 0
search\lpstrText = @syntax()\keyword
Repeat
result = SendMessage_(hGadget, #EM_FINDTEXTEX, #FR_DOWN, @search)
If result <> - 1
SendMessage_(hGadget, #EM_SETSEL, search\chrgText\cpMin, search\chrgText\cpMax)
format\crTextColor = syntax()\color
format\dwEffects = syntax()\effect
SendMessage_(hGadget, #EM_SETCHARFORMAT, #SCF_SELECTION|#SCF_WORD, @format)
search\chrg\cpMin = search\chrgText\cpMax
EndIf
Until result = - 1
Next
SendMessage_(hGadget, #EM_SETSEL, - 1, 0)
SendMessage_(hGadget, #EM_HIDESELECTION, #False, #Null)
SendMessage_(hGadget, #EM_LINESCROLL, #Null, 20)
EndProcedure
Restore SQL_ALPHA : Repeat : Read item$ : If item$ : Syntax_Add(item$, $0B95E0, #CFM_ITALIC) : EndIf : Until item$ = ""
Restore SQL_OP : Repeat : Read item$ : If item$ : Syntax_Add(item$, $0000DD, #CFE_BOLD) : EndIf : Until item$ = ""
Restore SQL_MOT : Repeat : Read item$ : If item$ : Syntax_Add(item$, $00AA00, #CFE_BOLD) : EndIf : Until item$ = ""
Restore SQL_FONCTION : Repeat : Read item$ : If item$ : Syntax_Add(item$, $AACC44, #CFM_BOLD) : EndIf : Until item$ = ""
Restore SQL_NUM : Repeat : Read item$ : If item$ : Syntax_Add(item$, $FF0000, 0) : EndIf : Until item$ = ""
Restore SQL_TABLE : Repeat : Read item$ : If item$ : Syntax_Add(item$, $9B0E15, #CFE_UNDERLINE) : EndIf : Until item$ = ""
Restore SQL_CHAMP : Repeat : Read item$ : If item$ : Syntax_Add(item$, $000000, 0) : EndIf : Until item$ = ""
DataSection
SQL_FONCTION:
Data.s "CONCAT", "DATE_FORMAT", #NULL$
SQL_NUM:
Data.s "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", #NULL$
SQL_OP:
Data.s ".", ",", ";", "!", "(", ")", "<", ">", " = ", "LIKE", "NOT", "AND", "OR", #NULL$
SQL_MOT:
Data.s "SELECT", "DISTINCT", "WHERE", "FROM", "JOIN", "ON", "ORDER BY", "ASC", "DESC", "LIMIT", #NULL$
SQL_ALPHA:
Data.s "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ":", "%", "'", Chr(34), #NULL$
SQL_TABLE:
Data.s "session", "droit", #NULL$
SQL_CHAMP:
Data.s "id", "prenom", "nom", "motdepasse", "inscription", "description", #NULL$
EndDataSection
If OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Colorisation Syntaxique")
If CreateGadgetList(WindowID(0))
EditorGadget(0, 5, 5, 630, 470)
If LoadFont(0, "Arial", 16, #PB_Font_HighQuality)
UseFont(0)
SetGadgetFont(0, FontID())
EndIf
requete$ = "SELECT CONCAT(session.nom, ' ', session.nom), " + #LF$
requete$ + "DATE_FORMAT('%d.%m.%Y %H:%i:%s', session.inscription), " + #LF$
requete$ + "session.id, " + #LF$
requete$ + "session.motdepasse, " + #LF$
requete$ + "session.droit, " + #LF$
requete$ + "droit.description " + #LF$ + #LF$
requete$ + "FROM session " + #LF$
requete$ + "JOIN droit ON droit.id = session.droit " + #LF$ + #LF$
requete$ + "WHERE 1 " + #LF$
requete$ + "AND session.prenom LIKE '%jean%' " + #LF$
requete$ + "AND session.droit != 'invite' " + #LF$
requete$ + "AND session.droit <> 'membre' " + #LF$ + #LF$
requete$ + "ORDER BY session.id ASC " + #LF$
requete$ + "LIMIT 0, 100;"
SetGadgetText(0, requete$)
Syntax_Apply(0)
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf