Skip to content

TWebSyntaxMemo

Below is a list of the most important properties methods and events for the TWebSyntaxMemo. TWebSyntaxMemo is using the external JavaScript written Ace editor.

Designtime Runtime

Loading a file

Loading with TWebFilePicker

First the file should be retrieved as a text. This can be done in the TWebFilePicker’s OnChange event:

procedure TForm1.WebFilePicker1Change(Sender: TObject);
begin
  //First nake sure that there's a file available
  if Assigned(WebFilePicker1.Files[0]) then
  begin
    WebFilePicker1.Files[0].GetFileAsText;
    //Additional code here
  end;
end;

Then assign the retrieved text to the TWebSyntaxMemo:

procedure TForm1.WebFilePicker1GetFileAsText(Sender: TObject;
  AFileIndex: Integer; AText: string);
begin
  WebSyntaxMemo1.Text := AText;
end;

Loading with drag and drop

For this approach a TWebFileReader is needed. Once the file is read, the text content can be assigned to the TWebSyntaxMemo.

procedure TForm1.WebFormCreate(Sender: TObject);
begin
  fr := TWebFileReader.Create(Self);
  fr.OnReadDone := DoReadLoaded;
end;

procedure TForm1.DoReadLoaded(aFileName: string; AResult: JSValue);
begin
  WebSyntaxMemo1.Text := JS.toString(AResult);
end;

What’s left to handle is the file reading itself when a file has been dropped onto the TWebSyntaxMemo. In the OnDragDrop event, the following can be written:

procedure TForm1.WebSyntaxMemo1DragDrop(Sender, Source: TObject; X, Y:
  Integer);
var
  f: TJSHTMLFile;
begin
  f := TJSDragEvent(TDragSourceObject(Source).Event).dataTransfer.files[0];
  //Get the file
  //Make sure it's available
  if Assigned(f) then
    fr.readAsBinaryString(f); //Read the file using the TWebFileReader
end;

Downloading a file

Downloading a file means a single line of code only.

For example with the code below, the contents of the editor can be downloaded to the test.txt file.

Application.DownloadTextFile(WebSyntaxMemo1.Text, 'test.txt');

Properties for TWebSyntaxMemo

Property Description
Autocompletion There are 3 options: saNone to disable autocompletion, saLive to autocomplete during typing and saBasic to show autocompleting keywords by pressing Ctrl+Space.
CaretPosition: Integer Position of the caret.
CustomAutocomplete A collection of custom keywords that can be added to autocollection. Keyword highlighting is not available
FadeFoldWidgets: Boolean Enable or disable fading fold widgets.
FixedGutterWidth: Boolean Gutter width can be fixed up to 1000 lines.
FontName: string Name of the font. Only monospaced fonts will work.
FontSize: Integer Size of the font.
HighlightActiveLine: Boolean Highlight the line where the caret is
Lines: TStringList Access the editor’s content as a TStringList.
Mode: TSyntaxMemoMode Language mode for the editor.
PersistentHorizontalScrollbar: Boolean Always show horizontal scrollbar.
PersistentVerticalScrollbar: Boolean Always show vertical scrollbar.
PrintMargin: Integer Value of the print margin position. Default is 80.
ReadOnly: Boolean Enable or disable read only mode.
SelLength: Integer Selection length.
SelStart: Integer Selection start.
ShowFoldWidgets: Boolean Hide or show the fold widgets.
ShowGutter: Boolean Hide or show the gutter.
ShowIndentGuides: Boolean Hide or show the indent guides.
ShowInvisibles: Boolean Hide or show the invisible characters such as whitespaces.
ShowLineNumbers: Boolean Hide or show the line numbers.
ShowPrintMargin: Boolean Hide or show the print margin.
SoftTabs: Boolean Enable or disable soft tabs.
TextDirection: TSyntaxTextDirection Text direction from left to right or right to left.
TabSize: Integer Size of the tab in spaces.
Text: string Access the editor’s content as a single string.
Theme: TSyntaxMemoTheme The theme of the editor.
WordWrap There are 4 options for wordwrapping: swNone means there’s no wordwrap, swPrintMargin will wrap at the print margin, swView will wrap at what’s visible and swValue will use the WordWrapValue to wrap at a configured length.
WordWrapIndented: Boolean Allow indenting in wordwrap.
WordWrapValue: Integer Wordwrap size. Only used if the WordWrap is set to swValue

Methods for TWebSyntaxMemo

Method Description
Clear Clears the content of the editor.
DisableLocalKeywords Disables local keywords that are added constantly while content is being added to the editor.
Find(AText: string) Finds and highlights the AText (if exists) in the editor’s content.
FindAll(AText: string) Finds all and highlights the first AText (if exists) in the editor’s content.
FindNext Finds the next occurrence of the highlighted text.
FindPrevious Finds the previous occurrence of the highlighted text.
Focus Focuses the editor.
InitializeKeyWords(ACompleter: TSyntaxCompleter) Initialize a set of keywords with ACompleter.
InsertText(AText: string) Insert AText at the caret position.
InsertText(APosition: TPoint; AText: string) Insert AText at APosition.
OpenSearchBox Opens the editor’s searchbox.
PreloadPascalKeywords Earlier versions of Ace does not support Pascal keywords in autocompletion. With this function, they can be preloaded as autocompletion keywords.
Redo ‘Redo’ edit command. Redoes an undid change.
RemoveSelectedText Remove the selected text.
RemoveCustomAutocompleter Remove the added custom autocompleter
RemovePascalKeywords Earlier versions of Ace does not support Pascal keywords in autocompletion. With this function, they can be removed from autocompletion keywords if they had been added previously.
Replace(AReplacement: string) ‘Replace’ edit command. It replaces the selected text with AReplacement
Replace(AText, AReplacement: string) ‘Replace’ edit command. It replaces AText with AReplacement.
ReplaceAll(AReplacement: string) ‘Replace all’ edit command. It replaces all occurrences of the selected text with AReplacement.
ReplaceAll(AText, AReplacement: string) ‘Replace all’ edit command. It replaces all occurrences of AText with AReplacement.
SelectAll ‘Select all’ edit command. Selects all of the text.
Undo ‘Undo’ edit command. Undoes the previous change.
Unselect ‘Unselect’ edit command. Unselects everything.

Events for TWebSyntaxMemo

Event Description
OnChangeCursor Event triggered when cursor position has changed.
OnChangeSelection Event triggered when text selection has changed.
OnDragDrop Event triggered when something is dropped onto the editor.
OnDragOver Event triggered when something is dragged over the editor.