From Lazarus wiki
Revision as of 15:59, 24 March 2012 by Vincent (talk | contribs) (Text replace - "delphi>" to "syntaxhighlight>")

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) русский (ru) 中文(中国大陆)‎ (zh_CN)


The SynEdit contained in Lazarus is based on on SynEdit 1.3 [[1]], and was adapted and extended quite a lot. For example UTF-8 support and code folding were added.

The package contains a source editor component named TSynEdit, several syntax highlighters and other components used for surce editing.

It is licensed under the same terms as the original SynEdit (MPL or GPL)

SynEdit in der IDE

The SynEdit in lazarus is a built-in package, because the IDE uses it itself. That's why there is no .lpk file. The components can be found on the component palette on the 'SynEdit' page.

Verwendung von SynEdit



There are 2 completion plugins for SynEdit:

  • TSynCompletion (the one used by the IDE)
  • TSynAutoComplete

Note: TSynAutoComplete (from the component palette) is not does not have a drop-down.

See examples for how to use both.

Ändern von Text mittels Code

Text can be accessed via SynEdit.Lines. Changing text via the Lines property does not work with undo/redo

Use TextBetweenPoints and TextBetweenPointsEx to change text, if you want undo/redo do work.


Examples can be found in the folder lazarus/examples/synedit

Wie Sie Unterstützung für Copy, Paste, Cut, Undo, Redo, etc hinzufügen

These features can be implemented by using SynEdit commands.

  SynEdit, SynEditKeyCmds;

procedure TfrmPrincipal.HandleCodigoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  if (Shift = [ssCtrl]) then
    case Key of
    VK_C: synCodigo.CommandProcessor(TSynEditorCommand(ecCopy), ' ', nil);
    VK_V: synCodigo.CommandProcessor(TSynEditorCommand(ecPaste), ' ', nil);
    VK_X: synCodigo.CommandProcessor(TSynEditorCommand(ecCut), ' ', nil);

Weitere Entwicklung, Diskussionen

  • RTL (right-to-left): started by Mazen
  • automatic monospace font selection: At the moment SynEdit starts with a font 'courier'. But it would be better, if SynEdit would start with a monospace font (meaning: every character has the same width). At the moment the LCL TFont does not provide such a property. At the moment the user has to choose the right font.
  • automatic UTF-8 font selection: Same as above monospace, but also with an UTF-8 font, so that for example umlaute are shown correctly. At the moment the user has to choose the right font.
  • Dead keys. Most keyboards support typing two or more keys to create one special character (like accented or umlaut characters).
  • Redesign of the SynEdit component. The primary goal is more reliable display and navigation in the text. A more modular approach also allows for better integration of extensions, and for specialized controls, for use outside of Lazarus.

Siehe auch