Lazarus 0.9.30 release notes

From Lazarus wiki
Jump to navigationJump to search

Template:Lazarus 0.9.30 release notes

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


  1. commits: xxx
  2. log: svn log -r xxxx:xxxx
  3. resolved bug tracker issues: xxx

LCL Interfaces major changes

  • Windows CE: Implemented menu support for KeyPad devices (previously worked only in PDA devices), implemented Clipboard support.
  • TGetDesignerFormEvent parameter uses TPersistent instead of TComponent. Reason: support for TCollection and TCollectionItem. Effects only designers.

LCL Changes

  • OpenURL function in the LCLProc unit.
  • TApplication.ApplicationType: atSmartphone was renamed to atKeyPadDevice to have a more consistent name. Smartphone devices with touch screen should be of atPDA type instead. atKeyPadDevice should be used for very simple phones and other simple devices (GPS, bar code scanner, etc) without touchscreen. atHandheld was removed. The supported types now are atKeyPadDevice, atPDA, atDesktop and atDefault. The correct type is calculated in Application.Initialize if one isn't forced. This property can be used to verify if automatic modifications are in place to adapt the application to the device.

IDE Changes

  • Various designer usability improvements:
    • arrow and tab keys switching between components
    • resize/move cancelation using ESC key
    • save/restore of the form window state (minimized/normal/maximized) in the project session
    • extended hints: show component TabStop,TabOrder in case of TWinControl, show new size/new position during components resize/reposition
  • When creating a new project the default unit output directory is now lib/$(TargetCPU)-$(TargetOS). Target file name is project1. This has no impact on old projects.
  • Quick fix for can't find unit: search unit in packages (memory and disk) and add requirement
  • Object inspector improvements:
    • Draw read only properties using another color (gray by default)
    • New ImageIndex property editor
  • Editor
    • Folding for XML, LFM
  • Support for FPC resources: You can now use {$R *.lfm} instead of {$i unit1.lrs}.
  • Package file names in packagefiles.xml are now saved without lazarus source directory. Switching to another lazarus source directory automatically reloads packages from the new lazarus source directory.
  • IDE now checks if lpi file changed on disk and asks if it should reopen the project.
  • Project compiler options can now be saved as default for new projects (see here)
  • Packages can now have a normal unit with the same name as the package. For example the package SynEdit has the unit synedit.pp. See here
  • Add to package dialog: removed pages Add unit and Add file. You can use Add files page or in the main menu Package / Add active unit to package.
  • If you start multiple instances of the IDE to debug different projects (e.g. client, server) you can now show the project name on the taskbar. See here.
  • IDE now preserves the file endings of source files (it uses the line ending of the first line, so it does not preserve mixed line endings). You can change the line ending of a source file via Source Editor / popup menu / File settings / Line ending
  • IDEIntf:
    • PropEditUtils unit is extracted from PropEdits
  • The ImageList Editor can split a image file into smaller images if the file height is a factor of the image list height. Previously it was only possible to split files where the file width was a factor of the image list width. It'll also split images that contains sub images in both dimensions (Width X Height). This allows to export/import image lists between different projects.


  • Codetools is now a normal package and stored in components/codetools/codetools.lpk. You can not uninstall it, but the IDE will now automatically recompile it, for example when cross compiling.
  • Support for objcclass syntax. See FPC PasCocoa.
  • support for strict private, strict protected, class sealed, class abstract
  • Block completion improved adding less wrong code.
  • Class completion: New option to disable adding a comment in front of the first method body. See here
  • Smarter auto indentation that mimics the indentation of surrounding code and/or an example file. See here.
  • identifier completion now completes compiler predefined types like String, AnsiString, Byte, Boolean, ...


  • AggPas - Anti Grain Geometry for Object Pascal - now supporting FPImage and LCL. AggPas highlights: Subpixel rendering, 8-bit alpha channel, paths, platform independent rendering using pure pascal. Official site: Aggpas. Package file: components/aggpas/lazarus/aggpaslcl.lpk. See the examples in components/aggpas/lazarus/examples.