Lazarus 4.0 release notes

From Free Pascal wiki
Jump to navigationJump to search

Lazarus 4.0 is not yet released. This page is under construction!

LCL Interfaces Changes

LCL Changes

TTaskDialog support for Queries

  • Because the unit LCLTaskDialog has been deprecated, the query capabilities of LCLTaskDialog.TTaskDialog have been added to Dialogs.TTaskDialog, albeit with a slightly different implementation.
    • New flag tfQuery: adds a query (in the form of a combobox) to the dialog.
      • New property QueryChoices (TStrings): sets the predefined answers.
      • New property QueryItemIndex: sets the ItemIndex of the combobox and holds said ItemIndex when the dialog is closed.
      • New flag tfQueryFixedChoices: control whether or not the user can add his/hers own text to the combobox.
      • New property QueryResult: holds the text of the choice made when the dialog closes.
    • New flag tfSimpleQuery: adds a single line Edit to the dialog. Note: this flag is mutually exclusive with the tfQuery flag.
      • New property SimpleQuery: sets the initial text of the Edit.
      • Property QueryResult holds the text of the Edit when the dialog closes.

TTaskDialog new events

The following (Delphi compatible) events were implemented:

  • OnDialogConstructed
  • OnDialogCreated
  • OnDialogDestroyed
  • OnVerificationClicked. This also updates the Flags property to reflect the current state of the verification checkbox.
  • OnExpanded (Windows Vista+ native dialog only). The associated new property Expanded only has meaning in the context of this event.
  • OnTimer
  • OnRadioButtonClicked
  • OnHyperlinkClicked (Windows Vista+ native dialog only). The associated new property URL only has meaning in the context of this event.

IDE Changes

Compiler Options

  • Added project compiler option for SubTarget.
  • Added compiler option Write config instead of command line parameters (@). See here. Useful for passing large amount of paths to the compiler or an easier way to use the Lazarus options in your build scripts.
  • Added predefined variable Laz_FullVersion to conditionals. See here. Useful to define Lazarus version dependent command line parameters.
  • Wildcards * and ** in search paths. See here

Debugger

  • Alt + Left-Mouse Gutter click / Ctrl-Alt-F5: Add breakpoint (if not yet set) and ,pen properties of breakpoint.

IDE Interface Changes

Components

Changes affecting compatibility

LCL incompatibility

TTaskDialog

  • The implementation of TTaskDialog has been refactored.
    • Widgetset specific implementation has been moved to the widgetset.
    • The emulated taskdialog has been moved to a new unit: TaskDlgEmulation.
    • The unit LCLTaskDialog has been deprecated.
    • Remedy: if you use TTaskDialog from (now deprecated) unit LCLTaskDialog, use TTaskDialog from Dialogs unit instead.
  • Execute now passes the handle of the active form instead of 0.
    • Reason: it makes Execute honour the tfRelativeToWindow flag.
    • Remedy: if your code relied on passing 0 as the ParentWind parameter use Execute(0) instead.
  • The occurrence of '\n' in e.g. captions is no longer converted to a LineFeed.
    • Reasons:
      • Wrong results if the capion of a (radio)button is set to e.g. 'Save in "c:\new_folder\new.work"'
      • You can have a LineFeed (#10) inside a Pascal string.
    • See also Issue #38676.
    • Remedy: use LineFeed character in captions where applicable.

Components incompatibility

Other release notes