Example14: Fonts

Category: Controls - Scintilla

Date: 02-16-2022

Return to Index


 
'Fonts, like FG/BG colors, are simply one of the attributes of styles. When Scintilla
'starts up (with no lexer active to set styles) the default style is 0, with the following
'attributes:
'    fontname - Verdana
'    fontsize - 8
'    FG/BG    - black/white
 
'Actually there are several other style attributes, but this snippet focuses on fonts.
'As a reminder, here is the complete list of style attributes:
'    FontName   Underline         FG/BG Colors
'    Size       CharacterSet      FillToEOL
'    Bold       Visible           Changeable
'    Italic     Case              Hotspot
 
'Fonts are set style by style. If you are displaying 5 styles in Scintilla, then to get
'the entire display to a common font you must set the font name for all 5 styhles.
 
'You can also use SCI_StyleClearAll, but that will change all attributes to those of
'Style_Default.  So if you want only to change the fontname, then you'll have to change
'the font name for each style (just a simple loop, see the example below).
 
 
'Primary Code:
'To set a font name and size, use the following messages
   Local F As String
   F = "Balloon" + Chr$(0)
   SendMessage hSci, %SCI_StyleSetFont, 0, StrPTR(F)
   SendMessage hSci, %SCI_StyleSetSize, 0, 12
 
'To set the font name for all displayed text, you must change the font name for each
'displayed font. Note that this example stops at style 31, making no change to the
'predefined styles 33-39.
   Local F As String, i As Long
   For i = 1 to 31
      F = "Balloon" + Chr$(0)
      SendMessage hSci, %SCI_StyleSetFont, 0, StrPTR(F)
   Next i
 
'You can also set the font name for all styles with a single message, but this set all
'style attributes, not just font name
   SendMessage hSci, %SCI_StyleClearAll, 0, 0
 
 
 
'Compilable Example:  (Jose Includes)
#Compiler PBWin 9, PBWin 10
#Compile EXE
#Dim All
%Unicode=1
#Include "Win32API.inc"
#Include "scintilla_gb.inc"
 
%Style_Zero = 0
%Style_One  = 1
 
%ID_Sci = 1000 : %ID_BtnA = 1001 : %ID_BtnB = 1002
Global hDlg, hSci, hLib As DWord
 
Function PBMain() As Long
   hLib = LoadLibrary("SCILEXER.DLL")
   Dialog New Pixels, 0, "Scintilla Example",300,300,300,150, %WS_OverlappedWindow To hDlg
   Control Add Button, hDlg, %ID_BtnA, "Change Colors", 10,10,90,20, %WS_Child Or %WS_Visible
   Control Add Button, hDlg, %ID_BtnB, "Change Fonts", 10,40,90,20, %WS_Child Or %WS_Visible
   Control Add "Scintilla", hDlg, %ID_Sci, "", 100,10,180,130, %WS_Child Or %WS_Visible
   Control Handle hDlg, %ID_Sci To hSci     'get handle to Scintilla window
   Dialog Show Modal hDlg Call DlgProc
End Function
 
CallBack Function DlgProc() As Long
   Local txt As String
   txt = "Select Case var$ 'first line" + $CrLf + "End Select 'last line" + Chr$(0)
   Select Case CB.Msg
      Case %WM_InitDialog
         InitializeScintilla
         PostMessage hSci, %SCI_SetSel, 0,0 'unselect initially
      Case %WM_Command
         Select Case CB.Ctl
            Case %ID_BtnA : TestA
            Case %ID_BtnB : TestB
         End Select
      Case %WM_Size
         Control Set Size hDlg, %ID_Sci, Lo(WordCB.lParam)-110, Hi(WordCB.lParam)-20
      Case %WM_Destroy
         If hLib Then FreeLibrary hLib      'free the Scintilla library
   End Select
End Function
 
Sub InitializeScintilla
   Local txt As String
   txt =               "This line is style zero"
   txt = txt + $CrLf + "This line is style one" + Chr$(0)
   SendMessage hSci, %SCI_SetText, 0, StrPTR(txt)
   SendMessage hSci, %SCI_SetMarginWidthN, 0, 20
 
   'set styleone, stylezero fonts/colors
   Control Set Focus hDlg, %ID_Sci               'focus
End Sub
 
Sub TestA
   'Set FG of two styles
   SendMessage hSci, %SCI_StyleSetFore, 0, %Red
   SendMessage hSci, %SCI_StyleSetFore, 1, %Blue
 
   'set some text to style 0
   SendMessage hSci, %SCI_StartStyling, 0, 31
   SendMessage hSci, %SCI_SetStyling, 23, 0
 
   'set some text to style 1
   SendMessage hSci, %SCI_StartStyling, 25, 31
   SendMessage hSci, %SCI_SetStyling, 22, 1
End Sub
 
Sub TestB
   Local F As String
   F = "Balloon" + Chr$(0)
   SendMessage hSci, %SCI_StyleSetFont, 0, StrPTR(F)
   SendMessage hSci, %SCI_StyleSetSize, 0, 12
 
   F = "Playbill" + Chr$(0)
   SendMessage hSci, %SCI_StyleSetFont, 1, StrPTR(F)
   SendMessage hSci, %SCI_StyleSetSize, 1, 20
End Sub
 
'gbs_00677
'Date: 03-10-2012


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm