
Lazarus is an Integrated Development Environment (IDE) for Free Pascal programming language.
This IDE provides a great tool for Free Pascal programming. It's similar to Delphi IDE when Borland was in charge of it. It’s a Multilanguage program and it allows establishing the interface language since the installation process. It uses Free Pascal and it provides the possibility to import Delphi files, like units, projects and packages.
This IDE is sorted and distributed in windows, allowing to have as many windows opened as it needs according to the project/code.
If you like code blocks, you can take advantage of code templates to allow checking or reviewing code syntaxes, structures and definitions of the Free Pascal language. Moreover, you can grab several packages from the developer's site and forum.
As any good IDE it provides object inspector, source editor, watch window, Code Explorer, Code Browser, ToDo List, and many others helpful tools that makes easier the programming task and the details code control. Its environment, Editor, Codetools and Debugger are fully customizable.
v1.8.4 [Jun 19, 2017]
LCL Interfaces Changes
• Qt5: new widgetset based on Qt5 libraries.
LCL Changes
• TApplication
o Scaled property: the LCL is DPI-aware. Please see High DPI for more information.
• TCustomForm
o new position poWorkAreaCenter - center form on working area (depends on DefaultMonitor)
o new compiler define LCLRealFormBounds. If you compile your application with LCLRealFormBounds on, the TCustomForm bounds (Width/Height) will be real outer bounds and not client bounds. Also constraints will affect real bounds. For now, it is supported only by win32.
o Scaled property: the LCL is DPI-aware. Please see High DPI for more information.
• TToolButton
o new style tbsButtonDrop - paints a drop down arrow on the right side of the button. In contrast to tbsDropDown the button has only single clicking area that invokes the DropDownMenu if assigned.
o new event OnArrowClick. It is called if Style=tbsDropDown when the user clicks the arrow button area of toolbutton. Breaking change: In 1.6. the OnClick event was called for this!
• TToolBar
o new DropDownWidth property to setup the width of the toolbutton arrow area for Style=tbsDropDown.
• ClipBoard
o The ClipBoard now supports copying and pasting text in HTML format by means of the methods GetAsHtml and SetAsHtml.
• Menus (TPopupMenu, TMainMenu, TMenuItem)
o Menus now support OwnerDraw with (almost) Delphi's approach. If you set TMenu.OwnerDraw to true the OnMeasureItem and OnDrawItem from TMenu and TMenuItem will be called. OnDrawItem from Lazarus has the same parameters as OnAdvancedDrawItem from Delphi. You can use the events also from TMenu, which is an LCL addition to Delphi. For now only win32 is supported.
• Dialogs
o TTaskDialog added
• TDateTimePicker
o new TDateTimePicker.Options property
IDE Changes
• lazbuild
o new option --add-package-link to register given lpk files without building.
• Quick Fixes
o new QuickFix for any fpc hint, note or warning: add compiler directive {$warn id off}
• Code creation
o new shortcut Ctrl ⇧ Shift X that shows a CodeCreation dialog with more options. Ctrl ⇧ Shift C never shows a dialog now.
o You can choose the default visibility of the methods in Tools / Options / Codetools / Class Completion / Default section of methods.
• Word Identifier completion: If the option Codetools / Identifier Completion / Replace whole words is enabled, pressing Return replaces the whole word at cursor, pressing Shift Return replaces only the left side. If the option is disabled it works the other way round: Return replaces left side, Shift Return replaces whole word.
• "case ofall" code template indentation change
o Old behavior: the created case-list was always flat
o New behavior: by default it is now indented according to source editor options.
o Reason: the indented case-list is Delphi-standard
o Remedy: edit the ofall template and use the WithoutExtraIndent parameter: "$OfAll(WithoutExtraIndent)"
• Ctrl-Enter alias "Open file at cursor" was improved when cursor in a Pascal file: It now recognizes properly $I and $R directives, uses nodes, string literals and comments.
• DPI awareness: the IDE is DPI-aware (it's ongoing work, so expect issues). Please see High DPI for more information.
• pas2js support:
o parsing the external class declaration of pas2js, code completion, find declaration, etc.
o namespaces: The IDE supports the -NS option and project default name spaces of Delphi/pas2js. As soon as FPC supports namespaces Lazarus supports it too.
• Editor
o New colored outline of source structure. (like cnpack, if then block outline)
• Support for Win98/WinNT has been dropped.
IDE Interfaces Changes
• New function LazarusIDE.FindUnitsOfOwner listing all units of a project/package. [1]
Components
LazControls
• Added T(Float)SpinEditEx, a widgetset independant implementation of T(Float)SpinEdit with some extended capabilities:
o NullValue property.
o Configurable behaviour when the text inside the control is not a number.
ToDoListLaz
• Now searches all used units of projects. Excluding used packages, including all units listed in the project inspector.
TAChart
• New component TChartCombobox
• Improved data point tools (property Target)
• New demos (runtime demos, datapointtools)
EditorToolbar
• The package editortoolbar.lpk is removed and its functionality is integrated in IDE.
o The settings can be found in Tools -> Options -> Environment -> Editor Toolbar