Roadmap
English · Русский
This document gives an idea of the current status of the various parts of Lazarus and also helps new contributors to find a suitable place where they can help. It also shows the people implementing the various parts and the targets.
Note: This page refers to the LCL Interface portion (that talks to the backend toolkits) of the Lazarus Component Library. It does NOT reflect on the actual features of the individual GUI toolkits (eg: GTK2, GTK3, Qt, Qt5, Qt6, fpGUI etc)
General status of LCL interfaces
Current status of the various parts of Lazarus
| Unit | Item | State | Target | Skills | Responsible | Comments |
|---|---|---|---|---|---|---|
| IDE | TCollection Editor | working | 0.9.x | FCL, RTTI, IDE||- | A generic TCollection editor for the various TCollections in the LCL/FCL. | |
| IDE | TActionList | working | 0.9.x||-||-||- | |||
| IDE | Doc Editor | working||- | fpdoc||- | The doc editor will be an integrated fpDoc editor similar to fpde. It will be a process of its own, so that it can show help for dialogs as well. It should also be able to write help for packages. | ||
| IDE | Export LFM as xml | working||-||-||- | Load and save LFM files to XML. | |||
| IDE | Icon Editor Roadmap | in progress | post 1.0||-||- | A simple icon editor with the ability to create lrs files. It will be a good example and can help newbies to create icons for their components. | ||
| LCL | Borderspacing | working | 0.9.x||-||- | for aligned controls | ||
| LCL | Drag&Drop | working | ||-||- | |||
| LCL | Port to Darwin Power PC, macOS | working | 0.9.x||-||- | depends on FPC 1.9.5 | ||
| LCL | Port to macOS (x86) | working||-||-||- | depends on FPC 2.1.1 | |||
| LCL | TSplitter | working | 0.9.x | easy||-||- | ||
| LCL | TFindDialog | working||-||-||- | Implemented in 0.9.16 | |||
| LCL | TReplaceDialog | working||-||-||- | Implemented in 0.9.16 | |||
| LCL | TControl.Font | in progress | 0.9.x||-||-||- | |||
| LCL | TTabControl | in progress | 0.9.x||-||-||- | |||
| LCL | Docking (= the combination of forms) | partially working, in progress | post 1.0 | deep LCL and interfaces | Mattias||- | |
| LCL | TFrame (= forms as children) | working | 0.9.28 | deep knowledge of LCL | Mattias, Paul||- | |
| IDE | Visual Form Inheritence | working | post 1.0 | IDE | Mattias | Properties are not yet propagated to open descendants |
| LCL | MDI - Multiple Documents Interfaces Putting fo ... | in progress | 1.2 | deep LCL and interfaces | Zeljan | An MDI LCL emulator for widgetsets which does not support MDI, also native implementation of MDI for qt and win32/64. Currently only qt has full MDI support, others are in progress. |
| LCL | Palette support | not implemented||-||-||- | Required to correctly show colors on a 256 colors display | |||
| LCL | TCoolBar | partially working, in progress | post 1.0 | LCL and anchoring | Juha||- | |
| LCL | TControlBar | skeleton implementation to prevent errors in Delphi conversion, in progress | post 1.0 | LCL and anchoring | Juha||- | |
| LCL | TMaskEdit | working||-||- | Bart||- | |||
| LCL | TDirectoryTreeView | not implemented||-||-||-||- | ||||
| LCL | Constrain maximization to specific area | not implemented||- | winapi, gtk||- | When maximizing a window, the left, top, width and height can all be constrained to a specific rectangular area on the screen/desktop. After this is done, constrain the source editor and maybe other windows | ||
| Components | TIcon | working | 0.9.26||- | Marc||- | ||
| Components | CUPS Package | working | 0.9.x | easy||- | ||
Status of features on each LCL Interface
| Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|
| Accelerator Keys | Working | Working | Partially Implemented | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
| Caret | Working | Working | Working | Working | Working | Unknown | Not Implemented | Working | Not Implemented |
| Clipboard | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Implemented in Android |
| Cursors | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Not Implemented |
| Drag & Drop | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
| Drop files event | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Working | Not Implemented |
| MDI Support | Not Implemented | Not Implemented | Not Implemented | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
| Printing | Working | Working | Working | Partially Implemented | Working | Unknown | Not Implemented | Not Implemented | Not Implemented |
| Regions | Working | Working | Working | Working | Working | Working | Partially Implemented | Partially Implemented | Working |
| TCustomControl descendents | Working | Working | Working | Partially Implemented | Working | Working | Working | Working | Working |
| Unicode Support | Working | Impossible to Implement | Working | Working | Working | Working | Working | Working | Working |
| BidiMode | Working | Not Implemented | Partially Implemented | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
| Application | Working | Working | Working | Working | Working | Partially Implemented | Partially Implemented | Working | Working |
| TTimer | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Working |
| TApplication.QueueAsyncCall | Working | Unknown | Working | Unknown | Working | Unknown | Working | Working | Not Implemented |
| TThread.Synchronize | Working | Unknown | Working | Unknown | Working | Unknown | Working | Working | Not Implemented |
| PostMessage | Working | Unknown | Working | Working | Working||class=""unknown"|Unknown | Working | Working | Not Implemented | |
| PostThreadMessage | Working | Unknown | Unknown | Unknown | Working | Unknown | Not Implemented | Unknown | Not Implemented |
Status of Graphics on each LCL Interface
| Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|
| TBitmap/TPixmap/TIcon/etc | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working |
| TBrush | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Working |
| TFont | Working | Working | Partially Implemented | Working | Working | Working | Partially Implemented | Working | Working |
| TPen | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Working |
| ExtTextOut | Working | Working | Working | Working | Working | Working | Working | Working | Working |
Status of native controls on each LCL Interface
Native controls are TWinControl descendants which do not descend from TCustomControl.
| Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|
| TBitBtn | Working | Working | Working | Working | Working | Working | Working | Working | Partially Implemented |
| TButton | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TCalendar | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TCheckBox | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TCheckGroup | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TCheckListBox | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TComboBox | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Implemented in Android |
| TEdit | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TForm | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TGroupBox | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TIdleTimer | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TImageList | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TListBox | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TListView | Working | Working | Partially Implemented | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TMainMenu | Working | Working | Working | Working | Working | Working | Working | Working | Implemented in Android |
| TMemo | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TMenuItem | Working | Working | Working | Working | Working | Working | Working | Working | Implemented in Android |
| TPageControl and TTabSheet | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TPairSplitter | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
| TPanel | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TPopupMenu | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TProgressBar | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TRadioButton | Working | Working | Working | Working | Working | Working | Working | Working | Partially Implemented |
| TRadioGroup | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TScrollBar | Working | Working | Working | Working | Working | Working | Partially Implemented | Working | Partially Implemented |
| TScrollBox | Working | Working | Working | Partially Implemented | Working | Unknown | Partially Implemented | Working | Not Implemented |
| TSpinEdit | Working | Working | Working | Working | Working | Unknown | Not Implemented | Working | Partially Implemented |
| TSplitter | Working | Working | Working | Working | Working | Unknown | Partially Implemented | Working | Not Implemented |
| TStaticText | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TStatusBar | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TToggleBox | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Working | Not Implemented |
| TTrackBar | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working |
| TTrayIcon | Working | Working | Working | Partially Implemented | Working | Not Implemented | Not Implemented | Working | Not Implemented |
Status of dialogs on each LCL Interface
| Component | win32 | gtk | gtk2 | carbon | qt/qt5 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|
| LCLIntf.MessageBox | Working | Working | Working | Not Implemented | Working | Working | Working | Working | Implemented for Android |
| Application.MessageBox, MessageDlg, LCLIntf.PromptUser | Working | Working | Working | Working | Working | Working | Working | Working | Implemented for Android |
| LCLIntf.AskUser | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TColorDialog | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
| TFontDialog | Working | Working | Working | Working | Working | Not Implemented | Working | Working | Not Implemented |
| TOpenDialog | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TPrinterSetupDialog | Working | Working | Working | Not Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |
| TSaveDialog | Working | Working | Working | Working | Working | Working | Working | Working | Not Implemented |
| TTaskDialog | Working | Unknown | Working | Working | Working | Unknown | Working | Working | Not Implemented |
Status of TCustomControl based controls on each LCL Interface
Note that being a TCustomControl descendant does not guarantee that a control has no widgetset implementation. TArrow has it, although it has a good default implementation. TNotebook is fully implemented in the LCL.
| Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|
| TArrow | Working | Working | Working | Working | Working | Working | Working | Working | Working |
| TNotebook | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Working |
| TUpDown | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented |
| TStringGrid | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Partially Implemented | Working | Partially Implemented |
| TDrawGrid | Working | Working | Working | Partially Implemented | Working | Unknown | Partially Implemented | Working | Partially Implemented |
| TToolBar | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Not Implemented |
| TTreeView | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Working | Not Implemented |
| TValueListEditor | Working | Working | Working | Partially Implemented | Working | Working | Partially Implemented | Working | Not Implemented |
Status of TGraphicControl based controls on each LCL Interface
Note: These are for LCL wrapped components only, not for the specific GUI toolkit features itself.
| Component | win32 | gtk | gtk2 | carbon | qt/qt5/qt6 | wince | fpgui | cocoa | customdrawn |
|---|---|---|---|---|---|---|---|---|---|
| TBevel | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented |
| TLabel | Working | Working | Working | Working | Working | Working | Working | Working | Implemented for Android |
| TShape | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Working | Working | Working |
| TSpeedButton | Working | Working | Working | Working | Working | Unknown | Working | Working | Working |
| TPaintBox | Working | Working | Working | Working | Working | Unknown | Working | Working | Working |
| TImage | Working | Working | Working | Working | Working | Partially Implemented | Working | Working | Working |
Status of LazDeviceAPIs on each widgetset
| Component | customdrawn-android |
|---|---|
| Accelerometer | Working |
| Messaging (SMS, MMS and E-Mail) | SMS Implemented |
| PositionInfo | Working |
See Also
From the Free Pascal wiki, page "Roadmap", as it stood on 2024-03-27 after a change by Bart, 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.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
