Sign in Join
Wiki copytemporary

Revision 2 of 2, by Trev on 2-18-2020. The page as it is now.

Lazarus 1.0 release notes

Statistics:

  1. commits: 7872
  2. resolved bug tracker issues: 487

LCL Interfaces Changes

LCL Changes

Known Issues

LazUtils Changes

IDE Changes

Components

Codetools

TAChart

SQLDB

ChmHelpPkg

Changes affecting compatibility

Installer / Upgrading from 0.9.26 or older on MS Windows

As of 0.9.28 the Windows IDE no longer saves options in the exe/installation directory. Installers for 0.9.28 and 0.9.30 asked before overwriting config in the installation directory, allowing the IDE to find such old config files and copy them to the new location.

As of 1.0 the installer will always overwrite such files without asking.

If you upgrade from 0.9.26 or before you are required to backup your old config, and restore it after installation. (The IDE will still copy it to the new location)

Background: As of 0.9.28 for any new installation (non update) the installer wrote a template config to the same location used by 0.9.26. The 1.0 installer now assumes that if the file exists, it is the template. Therefore it does not ask.

TCustomForm.Create raises an exception if resource is not found

See also

LM_DEACTIVATE message is removed

TCompileReason or TLazCompilerOptions not found

Two packages which share their unit output directory give "unit not found", because the IDE deletes the ppu files

SourceEditorIntf

SrcEditorIntf.SourceEditorWindow
removed, see 0.9.30 release notes, use SrcEditorIntf.SourceEditorManagerIntf

SynEdit

SynEdit: Changes to WantTabs

The default for WantTabs changed from False to True. If set to "False" Tab and Shift-Tab are now ignored.

The old behaviour was that SynEdit would always take the Tab key, if it was configured in the KeyStrokes (which by default it is). Only if WantTabs was False, and Tab removed from the Keystrokes, then the Tab was passed on to the Form (change Focus)

The new behaviour is, that if WantTabs is False then SynEdit will not take the Tab key, even if in KeyStrokes. If WantTabs is True SynEdit will always handle the Tab key (do nothing, if not in KeyStrokes)

SynEdit: Changes to Options, MouseOptions

All mouse related flags from the property Options were moved to MouseOptions. These are:

text
 eoAltSetsColumnMode, eoDragDropEditing, eoRightMouseMovesCursor, eoDoubleClickSelectsLine, eoShowCtrlMouseLinks

The new flags start with "em".

The old flags still exists (but should be considered deprecated).

Old code should work as before, no changes needed. As soon as MouseOptions is used (write access), code may need to be adapted.

SynEdit: Changes to MouseActions

A new flag was introduced: emUseMouseActions im SynEdit.MouseActions

Custom MouseActions are now only used, if this is set.

Changes required: If you use MouseActions different from the flags in MouseOptions (was Options), them enable this flag.

SynEdit: BeginUpdate adds UndoBlock

Calling SynEdit.BeginUpdate, now includes creating an undo-block. This means all changes made during the update will be one entry in the undo list.

Changes required: If the old behaviour is required, call SynEdit.BeginUpdate(False); the EndUpdate does not require any change, it adapts automatically.

SynEdit: Several deprecated methods were removed

SynEdit.SetSelWord
removed, use SynEdit.SelectWord

SynEdit.CtrlMouseActive
removed, the property was a dummy property for some time with no value. Information can be retrieved via TSynEditMarkupCtrlMouseLink(SynEdit.MarkupByClass[TSynEditMarkupCtrlMouseLink]).IsMouseOverLink

SynEdit.GutterWidth
removed, use SynEdit.Gutter.Width

SynEdit.CFDividerDrawLevel
removed, only worked with SynPasSyn. See TSynPasSyn for configuration

SynEditHighlighter.DividerDrawLevel
removed

SynEditLines(SynEdit.Lines).DosFileFormat
removed, use FileLineEndType and FileWriteLineEndType

TSynEditMarkList (Bookmarks)
First / Last / Place / Insert have been removed, use Items[] / Add. Insert has no replacements, as bookmarks are now always sorted, and inserts at arbitrary positions no longer possible

TSynEditMarkList (Bookmarks)
GetMarksForLine, removed, use Line[n] property

SynEdit: MouseLinkColor and the underline

SynEdit no longer automatically underlines a link with MouseLinkColor.Foreground.

Instead MouseLinkColor.Foreground is only used for the text foreground-color. To get the underline the following should be added/configured:

pascal
   MouseLinkColor.FrameColor := MouseLinkColor.Foreground;
   MouseLinkColor.FrameStyle := slsSolid;
   MouseLinkColor.FrameEdges := sfeBottom;
   MouseLinkColor.FramePriority := 9999;  // make sure it is on top of all other frames

SynEdit: TSynCustomFoldHighlighter

This may affect users who wrote their own highlighter fold support (inherited from TSynCustomFoldHighlighter)

This may affect users, who access such a highlighter from their code, to retrieve fold specific info.

FoldNodeInfo and FoldNodeInfoCount

Now available via Highlighter.FoldNodeInfo[LineIdx].CountEx([]) and Highlighter.FoldNodeInfo[LineIdx].NodeInfo(Index, [])

The following methods where removed:

function MinimumFoldLevel(Index: Integer): integer; virtual; abstract;

function EndFoldLevel(Index: Integer): integer; virtual; abstract;

The following methods where deprecated:

function FoldOpenCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;

function FoldCloseCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;

function FoldNestCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;

They are also no longer "virtual". Inherited classes must be updated

All functionality is now available through:

function FoldBlockOpeningCount(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual;

function FoldBlockClosingCount(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;

function FoldBlockEndLevel(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;

function FoldBlockMinLevel(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;

Please see notes in unit SynEditHighlighterFoldBase

SynEdit: TSynCompletion, TSynAutoCompletion and TSynEditAutoComplete

Changed base class to be TSynPlugin.

This means TSynCompletion/TSynAutoCompletion/TSynEditAutoComplete is now freed, if it has no owner ("create(nil)") and the last added editor is destroyed. (Removing the Editor, does not free the plugin)

In other words: An owner-less plugin, assumes ownership by it's editor.

Solution: - Either create the completion with an Owner (or use the designer and drop one on your form) - or keep at least one editor added - or remove the editor, before destroying it

TCustomNotebook was moved from ExtCtrls to ComCtrls

TCustomNotebook was renamed to TCustomTabControl

TCustomPageControl/TPageControl.OnPageChanged were removed

Support for the shift states ssCaps, ssNum and ssScroll was removed from OnMouseWheel.

pascal
uses LCLIntf;

begin
  CapsLock := LCLIntf.GetKeyState(VK_CAPITAL);
  NumLock := LCLIntf.GetKeyState(VK_NUMLOCK);
  ScrollLock := LCLIntf.GetKeyState(VK_SCROLL);

TDBEdit use EditMask property of the linked Field.

ENTER Key behavior on String Editor

The String Editor Dialog (e.g. TMemo.Lines OI's editor) now closes itself when the user hit <ENTER> and adds a new line when user hit <SHIFT> + <ENTER>. That regression is already fixed in fixes branch but the patch did not make it to release.

Other release notes


From the Free Pascal wiki, page "Lazarus 1.0 release notes", as it stood on 2020-02-18 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.