Sign in Join
Wiki copytemporary

Lazarus 1.0 release notes: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Statistics:
22
331. commits: 7872
442. resolved bug tracker issues: 487
55
66## LCL Interfaces Changes
77
88- Gtk2: Implemented LCLIntf.CreateEllipticRgn and CreateRoundRectRgn and implemented SetWindowRgn for TForm (previously it worked only for child controls).
99- WinCE: Implemented TSelectDirectoryDialog.
1010- A new interface was added called LCL-CustomDrawn which implements all native controls via the Lazarus Custom Drawn Controls. This interface has a minimal number of native elements and implements TCanvas drawing through the non-native TLazCanvas, TBitmap through TLazIntfImage, etc. This is the first Lazarus interface to support Android. It also supports Windows, Mac OS X (Cocoa) and X11.
1111- Qt: implemented full MDI support.
1212
1313## LCL Changes
1414
1515- The LCL is now a normal package. It is now automatically recompiled if needed. For example when switching the target platform and you have not yet compiled for this platform. This has no impact on existing projects.
1616- The platform independent parts of the LCL are now in the package LCLBase. This has no impact on existing projects.
1717- The linker options needed by the LCL are now **only** added to projects that use the package LCL. Formerly all projects got them. See [[The LCL in various platforms|here]].
1818- TCustomForm.Create raises an exception if a form resource is not found.
1919- TNotebook and TPage: The new implementations of these classes have been added.
2020- TDBNavigator: It is now possible to have focusable buttons by setting Options = \[navFocusableButtons\] and TabStop = True. This is useful for accessibility and for devices with neither mouse nor touch screen.
2121- The names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped and are now consistent. GetSideSpace = Around + GetSpace.
2222- TForm.WindowState=wsFullscreen was added
2323- TCanvas.TextFitInfo was added to calculate how many characters will fit into a specified Width. Useful for word-wrapping calculations.
2424- TControl.GetColorResolvingParent and TControl.GetRGBColorResolvingParent were added. They simplify the work of obtaining the final color of the control while resolving clDefault and the ParentColor.
2525- LCLIntf.GetTextExtentExPoint now has a good default implementation which can work in any platform which does not have a specific implementation for it. The specific implementations are still better, if they can be supported by the widgetset.
2626- TTabControl was reorganized. Now it has the correct class hierarchy and inherits from TCustomTabControl as it should.
2727- New unit in the LCL: lazdialogs.pas. This unit has non-native versions of various native dialogs, for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog. It is utilized by widgetsets which either do not have a native dialog, or do not wish to use it because it is limited. These dialogs can also be utilized by user applications directly.
2828- New unit in the LCL: lazdeviceapis.pas. This unit offers an interface to more hardware devices such as the accelerometer, GPS, etc. See [[LazDeviceAPIs]]
2929- New unit in the LCL: lazcanvas.pas. LazCanvas is a TFPImageCanvas descendent which implements drawing in a LCL-compatible way, but 100% in Pascal, doing all the drawing itself.
3030- New unit in the LCL: lazregions.pas. LazRegions is a wholly Pascal implementation of regions for canvas clipping, event clipping, finding in which control of a region tree one an event should reach, for drawing polygons, etc.
3131- New LCL units: customdrawncontrols.pas, customdrawndrawers.pas, customdrawn_common.pas, customdrawn_android.pas and customdrawn_winxp.pas. These are the [[Lazarus Custom Drawn Controls]] -controls which imitate the standard LCL ones, but with the difference that they are non-native and skinnable.
3232- New APIs were added to the LCL to improve our support for accessibility software such as screen readers. Read more in [[LCL Accessibility]]
3333
3434### Known Issues
3535
3636- Accessibility support in TCustomTreeView might make this control slower if there is a very large number of items, for example, 10.000+ items. If the performance impact is unacceptable it is possible to turn accessibility off for treeview items by setting TCustomTreeView.AccessibilityOn to false. The default value is true.
3737- Ubuntu's Unity liboverlay library does not work well with the LCL. See [[GTK2 Interface|here]]
3838
3939## LazUtils Changes
4040
4141- LazUtils and the LCL now contain a 100% Pascal implementation of text rendering which can read TrueType fonts and draw crisp texts with ClearType anti-aliasing. This library is called [[LazFreeType]] and is almost entirely in LazUtils except for one unit, the drawer unit of the LCL.
4242
4343## IDE Changes
4444
4545- The old warnings at IDE start for Lazarus directory, compiler and FPC sources were replaced with single dialog. You can force this dialog to show with the command line parameter **--setup**.
4646- A new project now saves the session information (open files, caret positions, etc) as separate lps file in the project directory. You can change this in Project / Project Options / Session.
4747- The IDE no longer asks whether changes should be saved, if only the session data has changed (such as the cursor positions) and the session is saved in the separate lps file. You can enable the confirmation in Tools / Options / Desktop / Auto Save. See [[http://wiki.lazarus.freepascal.org/IDE Window: Environment Options|http://wiki.lazarus.freepascal.org/IDE_Window:_Environment_Options#Auto_Save here]].
4848- Compiler options: You can now use the project build macros in the search paths, linker and custom options of the project and all packages of the project. See the [[Macros and Conditionals|examples]].
4949- The package editor and project inspector were improved to better support big packages/projects with hundreds of files: You can now sort, filter and show the directory structure.
5050- Packages compiled via Makefile created by the IDE are now recognized by the IDE and only recompiled if something has changed.
5151- Package general and package compiler options are now using the generic IDE Options interface.
5252- New dialog to [[IDE Window: Clean up build files dialog|clean up build files]], including all project's packages.
5353- Cleaner clean up when compiling packages: The IDE now deletes all files in the unit output directory of a package unless the directory contains sources or is shared with another package ([[Lazarus Packages|See packages]]).
5454- Open File: filter list is now configurable in Tools / Options / Environment / [[IDE Window: Environment Options|File Filters]]
5555- Export to html
5656- Editor:
5757 - Codefolding: Folded code remains folded, even if it temporarily becomes part of a comment (due to an open "(*" or "{"). Note: Such folds are not saved in the session, they are once they returned to there normal state, after the closing "*)"/"}" was typed.
5858 - Codefolding: Ability to hide (fold) the currently selected text. These folds are not saved to the session
5959 - Improved Mouse wheel support: Allows to zoom the editor (ctrl wheel) and slower/faster scrolling (shift/alt). Keys can be reconfigured.
6060 - Basic Macro-Recorder. (Only one Editor can record at a time, Macro can then be played to any editor)
6161 - Info-Hint, showing the current class/procedure on top of the editor, if it would otherwise be scrolled out
6262- Debugger
6363 - Added display format for CPU-Register
6464 - Added Pascal Source to Disassembler
6565 - Added breakpoints, (display and toggle) to Disassembler
6666 - Added Thread dialog
6767 - Added Watchpoints (data breakpoints)
6868 - History of Watches and Locals [[http://lazarus-dev.blogspot.com/2011/05/remember-remember-history-of-debugging.html see blog]]
6969 - Added logging of most of events (Event Log)
7070 - Added ability for a breakpoint (breaking or none-breaking) to enable/disable other breakpoints
7171 - Watch/Inspect the an object as the instantiated class.
7272- Main menu structure got revamped. Source menu and its Refactor sub-menu are new.
7373- New menu item to insert MIT license text
7474- Filters were added for many ListBoxes and TreeViews in the IDE, including IDE Options, Project Options (visible pages filtered by option name), Package and Project Inspector, Install / Uninstall packages, and many others. Next version will have a filter even in Object Inspector.
7575- "Use Unit" (Alt-F11) dialog allows selecting from all available units, not only project units.
7676- [[Lazarus IDE Tools|Parameter Hints]] now have a button to paste the missing parameter names.
7777- Code Explorer: Filter now deletes nodes, instead of marking.
7878- Code Explorer: New category "Surrounding" allows to quickly jump to interface, implementation and nested procedures.
7979- Help for keywords: The chmhelp package can now show help for keywords.
8080- New window: Tools -\> "Example Projects"
8181- Window: View -\> Components was improved and it can be opened from Component palette's local menu
8282- Configure Build Lazarus window was changed. LCL, other packages and IDE don't need their own selections any more. Examples were moved to a new window.
8383- startlazarus now supports the --pcp parameter allowing multiple installations of Lazarus.
8484- [[lazbuild]]
8585 - can now create/update the Makefile of a package with the new option --create-makefile.
8686 - --build-ide= now builds under Windows lazarus.exe, not lazarus.new.exe
8787 - --build-ide= now appends the options instead of replacing.
8888 - --build-mode= can now be used together with --build-ide to select the build profile of the IDE.
8989- **Design time only packages** are no longer compiled into projects, unless enabled. See [[Lazarus Packages|here]].
9090- New package type **Runtime only, can not be installed in IDE**. Use this to for package incompatible with the LCL or the IDE. See [[Lazarus Packages|here]].
9191- When creating a new package the option to [[IDE Window: Package Options|Add to the uses section of the project]] is now disabled by default.
9292- New menu item to quickly create a new component: Package / New component.
9393- New macros: **PrimaryConfigPath**, **SecondaryConfigPath**, **FallbackOutputRoot**, **PkgName**. See [[IDE Macros in paths and filenames|IDE Macros]]
9494- The IDE interface unit **projectintf** was split into projectintf and **compoptsintf**. The unit compoptsintf contains the access to the various compiler options of the IDE. The unit packageintf now grants access to the compiler options of packages.
9595- New projects can now be created with your own set of build modes, for example "debug" and "release". For this a feature was extended: Project / Project Options / Use these options as default for new projects.
9696- The compiler option -Wpunitname, specifying the controller unit for embedded systems, is now used when doing a "find declaration". You can give this option under compiler options / other.
9797- Project title can now contain macros
9898- Packages have no longer compiler setting for TargetOS, TargetCPU, LCLWidgetType. They use the project settings. Or when compiling the IDE they use the IDE settings. Or when compiled via lazbuild they use the command line parameters.
9999- Building the IDE with the IDE or lazbuild: The backup of the old Lazarus executable now works the same on all platforms. Before building the old Lazarus executable is now renamed to lazarus.old.exe. If there is already a lazarus.old.exe it will be deleted. If it can not be deleted it is renamed to lazarus.old2.exe. If even this fails a lazarus.new.exe is created. If building fails the lazarus.old.exe is renamed back to lazarus.exe,
100100- When putting a new frame on a form the IDE now allows to select from frames in packages.
101101- A dialog was added to see which package/project needs rebuilding and why: View / IDE Internals / What needs Building
102102- Pasting multiple components on a designer form now keeps references between them
103103
104104## Components
105105
106106### Codetools
107107
108108- Parsing, searching and code completion of **class operators** and **advanced records**.
109109- Parsing **objcclass external** syntax.
110110- Parsing and class completion of **nested classes**. Searching is not yet fully implemented.
111111- Parsing of class sections **type**, **const**, **var**, **class var**. Searching is not yet fully implemented.
112112- Parsing **delphi style generics**. Searching in spezialized types is not yet fully implemented.
113113- Parsing **jvm** syntax.
114114- ctnClassType, ctnClassConst, ctnClassVar were removed and replaced with ctnTypeSection, ctnConstSection, ctnVarSection.
115115- The class sub sections ctnTypeSection, ctnConstSection, ctnVarSection are now children of the visibility sections.
116116- New IDE package for advanced Codetools: [[Cody]].
117117- Find declaration: "inherited;"
118118- Identifier completion:
119119 - for compiler directives: keywords and FPC macros.
120120 - IDE option to replace only the prefix instead of the whole identifier (Tools / Options / Codetools / Identifier Completion / Replace whole identifier).
121121 - more keywords for programs, libraries and properties
122122- Code completion:
123123 - now creates variables from pointer parameters, e.g. *CreateIconIndirect(@IconInfo)* will create *var IconInfo:TIconInfo;*. See [[Lazarus IDE Tools|here]].
124124 - now creates procedures/methods from parameters, e.g. *List.Sort(@MySortFunction)* will create the new function *MySortFunction(Item1, Item2: Pointer): Integer*. See [[Lazarus IDE Tools|here]].
125125
126126### TAChart
127127
128128- Wiki [[TAChart documentation|documentation]]
129129- On{Before\|After}Draw{BackWall\|Background}, OnExtentChanged events for TChart
130130- Antialiasing
131131- TChartAxis:
132132 - MarkPositions to implement labels-inside bars and pies
133133 - **Minor axis** ticks and grid
134134 - AxisPen and Range properties
135135 - Intervals property to control **interval size**
136136 - Margin property
137137- TChartAxisMarks:
138138 - Stripes property to create "striped" chart background
139139 - YIndex property to implement labels for stacked series
140140 - Range property
141141- TFuncSeries now correctly work with rotation and axis transformation
142142- **5 new series**:
143143 - Open-High-Low-Close, B-spline, Cubic spline, Polar, Fit
144144- 3D pie series, TPieSeries.EdgePen property
145145- Multi-line mark labels, title and footer rotation
146146- **6 new tools**:
147147 - TDataPointClickTool, TDataPointHintTool, TDataPointCrosshairTool, TZoomMouseWheelTool, TPanMouseWheelTool, TUserDefinedTool
148148 - TBasicPanTool.LimitToExtent property
149149- Drag-zoom and crosshair (former reticule) now should work on Qt and MacOS
150150- KeyDown/KeyUp/MouseWheel events for chart tools
151151- New transformations: TCumulNormDistrAxisTransform, TUserDefinedAxisTransform
152152- New data source: TIntervalChartSource
153153- TCalculatedChartSource: derivative and smooth derivative, AccumulationDirection
154154- Series can now skip NaN values
155155- New IChartDrawer API with various **drawing back-ends**:
156156 - AggPas (separate package)
157157 - Printer, for printing charts with appropriate scaling (separate package)
158158 - OpenGL
159159 - FPCanvas/NoGUI, for using in web servers
160160 - SVG
161161 - BGRABitmap (separate package)
162162 - Windows Metafile (separate package)
163163 - FPVectorial (separate package)
164164- Navigation components: TChartNavScrollBar, TChartNavPanel
165165- Legend:
166166 - Item format
167167 - Multiple columns, fill direction
168168 - Ordering and grouping
169169 - SymbolFrame property
170170 - OnCreate event
171171- New components: TChartListbox, TChartExtentLink, TChartImageList
172172- Enumerators
173173- Arrow property for TConstantLine and TChartAxis
174174- TChart.MarginsExternal and ExtentSizeLimit properties
175175- Design-time editor for TListChartSource.DataPoints
176176- **17 new demo projects**, many updates to existing demos
177177- Backwards-incompatible changes:
178178 - Adding Pie series does not automatically hide axises any longer
179179 - TZoomDragTool.Proportional property is replaced by RatioLimit, allowing single-axis zooming
180180 - TReticuleTool, TChart.ReticuleMode, TChart.ReticulePos and TChart.OnDrawReticule are deprecated and will be removed, use TDataPointCrosshairTool instead
181181
182182### SQLDB
183183
184184- Added mssql connectors (supports Microsoft SQL Server), requires fpc 2.6.1+
185185- Added sybase connectors (supports Sybase ASE), requires fpc 2.6.1+
186186- Added mysql 5.5 connector, requires fpc 2.6.1+
187187
188188### ChmHelpPkg
189189
190190- HelpFilesPath can now contain macros and multiple directories separated by semicolon
191191
192192## Changes affecting compatibility
193193
194194### Installer / Upgrading from 0.9.26 or older on MS Windows
195195
196196As 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.
197197
198198As of 1.0 the installer will always overwrite such files without asking.
199199
200200If 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)
201201
202202Background: 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.
203203
204204### TCustomForm.Create raises an exception if resource is not found
205205
206206- **Reason**: Each form created by the IDE should have a resource, so if resource is not found there is something wrong with either a resource or the unit which contains the faulty form. Therefore the application should inform the developer that the form can't function correctly without the resource. This change is also Delphi compatible and compatible with TFrame and TDataModule components.
207207- **Remedy**: If you need a resourceless form you have 3 options:
208208 - Create a TForm class (not a descendant)
209209 - Construct your form using the CreateNew() constructor.
210210 - It is also possible to disable the exception by setting the global variable RequireDerivedFormResource to False.
211211
212212[See also](http://lists.lazarus.freepascal.org/pipermail/lazarus/2011-February/060229.html)
213213
214214### LM_DEACTIVATE message is removed
215215
216216- **Reason**: Both LM_ACTIVATE and LM_DEACTIVATE had Active field which have WA_ACTIVE, WA_INACTIVE flags. Also this is more VCL compatible solution.
217217- **Remedy**: Move LM_DEACTIVATE code to the LM_ACTIVATE handler inside a check of Message.Active = WA_INACTIVE, Move LM_ACTIVATE code inside a check for Message.Active \<\> WA_INACTIVE
218218
219219### TCompileReason or TLazCompilerOptions not found
220220
221221- **Reason**: The unit projectintf was split. The declarations for the IDE compiler options are now in the unit compoptsintf. The unit packageintf needed access to the compiler options.
222222- **Remedy**: Add unit **compoptsintf** to the uses section.
223223
224224### Two packages which share their unit output directory give "unit not found", because the IDE deletes the ppu files
225225
226226- **Reasons:** When a package is compiled clean and the unit output directory of a package is not shared by sources nor dependent packages the IDE now deletes all files in the output directory. This solves the frequent "unit not found" / "checksum changed" problem of renamed/moved units and other left garbage created by upgrades and experiments.
227227- **Remedy:** Change the unit output directory of one those packages OR create a dependency between the two packages OR set one of the two packages to update manually (Package Editor / Options / IDE Integration).
228228
229229### SourceEditorIntf
230230
231231SrcEditorIntf.SourceEditorWindow
232232removed, see [[Lazarus 0.9.30 release notes|0.9.30 release notes]], use SrcEditorIntf.SourceEditorManagerIntf
233233
234234### SynEdit
235235
236236#### SynEdit: Changes to WantTabs
237237
238238The default for WantTabs changed from False to True. If set to "False" Tab and Shift-Tab are now ignored.
239239
240240The 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)
241241
242242The 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)
243243
244244#### SynEdit: Changes to Options, MouseOptions
245245
246246All mouse related flags from the property Options were moved to MouseOptions. These are:
247247
248-` eoAltSetsColumnMode, eoDragDropEditing, eoRightMouseMovesCursor, eoDoubleClickSelectsLine, eoShowCtrlMouseLinks`
248+```text
249+ eoAltSetsColumnMode, eoDragDropEditing, eoRightMouseMovesCursor, eoDoubleClickSelectsLine, eoShowCtrlMouseLinks
250+```
249251
250252The new flags start with "em".
251253
252254The old flags still exists (but should be considered deprecated).
253255
254256- **Changes** to the old values are forwarded to the new MouseOptions
255257- Setting Options, but keeping the (all/some) mouse related flags as they currently were in Options (even if different from MouseOptions) will **not** update MouseOptions.
256258- Setting a value in MouseOptions to true, will not update Options.
257259- Clearing a value in MouseOptions (set to false) will update (clear) Options. But only if it was set in MouseOptions before (changed).
258260
259261Old code should work as before, no changes needed. As soon as MouseOptions is used (write access), code may need to be adapted.
260262
261263#### SynEdit: Changes to MouseActions
262264
263265A new flag was introduced: emUseMouseActions im SynEdit.MouseActions
264266
265267Custom MouseActions are now only used, if this is set.
266268
267269Changes required: If you use MouseActions different from the flags in MouseOptions (was Options), them enable this flag.
268270
269271#### SynEdit: BeginUpdate adds UndoBlock
270272
271273- **This changes do not affect the usage of SynEdit via the designer**
272274
273275Calling SynEdit.BeginUpdate, now includes creating an undo-block. This means all changes made during the update will be one entry in the undo list.
274276
275277Changes required: If the old behaviour is required, call SynEdit.BeginUpdate(False); the EndUpdate does not require any change, it adapts automatically.
276278
277279#### SynEdit: Several deprecated methods were removed
278280
279281- **This changes do not affect the usage of SynEdit via the designer**
280282
281283SynEdit.SetSelWord
282284removed, use SynEdit.SelectWord
283285
284286SynEdit.CtrlMouseActive
285287removed, the property was a dummy property for some time with no value. Information can be retrieved via TSynEditMarkupCtrlMouseLink(SynEdit.MarkupByClass\[TSynEditMarkupCtrlMouseLink\]).IsMouseOverLink
286288
287289SynEdit.GutterWidth
288290removed, use SynEdit.Gutter.Width
289291
290292SynEdit.CFDividerDrawLevel
291293removed, only worked with SynPasSyn. See TSynPasSyn for configuration
292294
293295SynEditHighlighter.DividerDrawLevel
294296removed
295297
296298SynEditLines(SynEdit.Lines).DosFileFormat
297299removed, use FileLineEndType and FileWriteLineEndType
298300
299301TSynEditMarkList (Bookmarks)
300302First / 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
301303
302304TSynEditMarkList (Bookmarks)
303305GetMarksForLine, removed, use Line\[n\] property
304306
305307#### SynEdit: MouseLinkColor and the underline
306308
307309SynEdit no longer automatically underlines a link with MouseLinkColor.Foreground.
308310
309311Instead MouseLinkColor.Foreground is only used for the text foreground-color. To get the underline the following should be added/configured:
310312
311-`   MouseLinkColor.FrameColor := MouseLinkColor.Foreground;`\
312-`   MouseLinkColor.FrameStyle := slsSolid;`\
313-`   MouseLinkColor.FrameEdges := sfeBottom;`\
314-`   MouseLinkColor.FramePriority := 9999;  // make sure it is on top of all other frames`
313+``` pascal
314+ MouseLinkColor.FrameColor := MouseLinkColor.Foreground;
315+ MouseLinkColor.FrameStyle := slsSolid;
316+ MouseLinkColor.FrameEdges := sfeBottom;
317+ MouseLinkColor.FramePriority := 9999; // make sure it is on top of all other frames
318+```
315319
316320#### SynEdit: TSynCustomFoldHighlighter
317321
318322- **This changes do not affect the usage of SynEdit via the designer**
319323
320324
321325This may affect users who wrote their own highlighter *fold* support (inherited from TSynCustomFoldHighlighter)
322326
323327This may affect users, who access such a highlighter from their code, to retrieve fold specific info.
324328
325329FoldNodeInfo and FoldNodeInfoCount
326330
327331
328332Now available via Highlighter.FoldNodeInfo\[LineIdx\].CountEx(\[\]) and Highlighter.FoldNodeInfo\[LineIdx\].NodeInfo(Index, \[\])
329333
330334The following methods where removed:
331335
332336
333337function MinimumFoldLevel(Index: Integer): integer; virtual; abstract;
334338
335339function EndFoldLevel(Index: Integer): integer; virtual; abstract;
336340
337341The following methods where deprecated:
338342
339343
340344function FoldOpenCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;
341345
342346function FoldCloseCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;
343347
344348function FoldNestCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;
345349
346350They are also no longer "virtual". Inherited classes must be updated
347351
348352All functionality is now available through:
349353
350354
351355function FoldBlockOpeningCount(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual;
352356
353357function FoldBlockClosingCount(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;
354358
355359function FoldBlockEndLevel(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;
356360
357361function FoldBlockMinLevel(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;
358362
359363Please see notes in unit SynEditHighlighterFoldBase
360364
361365#### SynEdit: TSynCompletion, TSynAutoCompletion and TSynEditAutoComplete
362366
363367Changed base class to be TSynPlugin.
364368
365369This 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)
366370
367371In other words: An owner-less plugin, assumes ownership by it's editor.
368372
369373Solution: - 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
370374
371375### TCustomNotebook was moved from ExtCtrls to ComCtrls
372376
373377- **Effects**: TCustomNoteBook was moved
374378- **Reason**: TCustomNotebook implements TPageControl, which is located in the ComCtrls unit. Logically the implementation of TPageControl should be in the ComCtrls unit, and this is also Delphi compatible. This change will also diminish the confusion that people make between TNotebook and TCustomNotebook, because both will be in different units now.
375379- **Remedy**: The vast majority of projects should simply use TPageControl, so no change is required. For those that use TCustomNotebook, please change them to use TPageControl instead.
376380
377381### TCustomNotebook was renamed to TCustomTabControl
378382
379383- **Effects**: TCustomNoteBook was renamed
380384- **Reason**: The previous name implied an unexisting relation to TNotebook, which caused a lot of confusion. On top of that, it was also Delphi-incompatible. The new name is Delphi compatible and fixes the previous problems.
381385- **Remedy**: Rename any occurance of TCustomNotebook to TCustomTabControl.
382386
383387### TCustomPageControl/TPageControl.OnPageChanged were removed
384388
385389- **Effects**: TPageControl.OnPageChanged was removed
386390- **Reason**: This event should never have existed because it is just a duplicate of OnChange which is the correct Delphi-compatible event. The way it was implemented, this event caused OnChange to be called twice, as per bug <http://bugs.freepascal.org/view.php?id=19903>
387391- **Remedy**: Rename any occurance of TPageControl.OnPageChanged to TPageControl.OnChange. If you are using an old IDE but a new LCL you might error messages. To fix this, just rebuild your IDE to have it on the same version as your LCL.
388392
389393### Support for the shift states ssCaps, ssNum and ssScroll was removed from OnMouseWheel.
390394
391395- **Previous behaviour**: LCL-Win32 would send ssCaps, ssNum and ssScroll based on the key lock state, which is totally wrong. Windows does not support those keys as shift states. LCL-Carbon had ssCaps implemented and LCL-Gtk1/2 had unreliable implementations for them. All of those implementations were only for mouse wheel events, which is inconsistent with other mouse events.
392396- **Effects**: ssCaps, ssNum and ssScroll are now never sent in mouse wheel events.
393397- **Reason**: These shift states were implemented very unreliably and only for mouse wheel events and they cannot be implemented reliably.
394398- **Remedy**: If you were previously depending on receiving the caps lock, num lock, etc, lock state in the win32 interface, use this code instead:
395399
396400``` pascal
397401uses LCLIntf;
398402
399403begin
400404 CapsLock := LCLIntf.GetKeyState(VK_CAPITAL);
401405 NumLock := LCLIntf.GetKeyState(VK_NUMLOCK);
402406 ScrollLock := LCLIntf.GetKeyState(VK_SCROLL);
403407```
404408
405409### TDBEdit use EditMask property of the linked Field.
406410
407411- **Previous behaviour**: TDBEdit controls used the value stored in EditMask property (inherited from TCustomMaskEdit).
408412- **Effects**: TDBEdit.EditMask property will be ignored.
409413- **Reason**: Delphi compatibility.
410414- **Remedy**: To keep old behavior set CustomEditMask to True
411415
412416### ENTER Key behavior on String Editor
413417
414418The 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.
415419
416420# Other release notes
417421
418422---
419423*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](/wiki-contact).*
420424Category: Lazarus
421425Category: Release Notes

Back to history