<!DOCTYPE html>
<html dir="ltr" class="client-js" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Lazarus 1.0 release notes - Lazarus wiki</title>
<meta charset="UTF-8">
<meta name="generator" content="MediaWiki 1.18.1">
<link rel="shortcut icon" href="http://wiki.lazarus.freepascal.org/favicon.ico">
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.lazarus.freepascal.org/opensearch_desc.php" title="Lazarus wiki (en)">
<link rel="EditURI" type="application/rsd+xml" href="http://wiki.lazarus.freepascal.org/api.php?action=rsd">
<link rel="copyright" href="http://sourceforge.net/">
<link rel="alternate" type="application/atom+xml" title="Lazarus wiki Atom feed" href="http://wiki.lazarus.freepascal.org/index.php?title=Special:RecentChanges&feed=atom">
<link rel="stylesheet" href="Lazarus_1.0_release_notes_files/load_002.css">
<!--[if lt IE 5.5000]><link rel="stylesheet" href="/skins/monobook/IE50Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 5.5000]><link rel="stylesheet" href="/skins/monobook/IE55Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 6]><link rel="stylesheet" href="/skins/monobook/IE60Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="/skins/monobook/IE70Fixes.css?303" media="screen" /><![endif]--><style type="text/css" media="all">.mw-collapsible-toggle{float:right} li .mw-collapsible-toggle{float:none} .mw-collapsible-toggle-li{list-style:none}

/* cache key: lazaruswiki:resourceloader:filter:minify-css:4:4250852ed2349a0d4d0fc6509a3e7d4c */
</style><style type="text/css" media="all">.js-messagebox{margin:1em 5%;padding:0.5em 2.5%;border:1px solid #ccc;background-color:#fcfcfc;font-size:0.8em}.js-messagebox .js-messagebox-group{margin:1px;padding:0.5em 2.5%;border-bottom:1px solid #ddd}.js-messagebox .js-messagebox-group:last-child{border-bottom:thin none transparent}

/* cache key: lazaruswiki:resourceloader:filter:minify-css:4:8b08bdc91c52a9ffba396dccfb5b473c */
</style><meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" href="Lazarus_1.0_release_notes_files/load.css">
<style>a:lang(ar),a:lang(ckb),a:lang(fa),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}a.new,#quickbar a.new{color:#ba0000}

/* cache key: lazaruswiki:resourceloader:filter:minify-css:4:c88e2bcd56513749bec09a7e29cb3ffa */
</style>
<script src="Lazarus_1.0_release_notes_files/load.php"></script><script src="Lazarus_1.0_release_notes_files/load_004.php"></script>
<script>if(window.mw){
        mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "Lazarus_1.0_release_notes", "wgTitle": "Lazarus 1.0 release notes", "wgCurRevisionId": 61163, "wgArticleId": 6163, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["Release Notes"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []});
}
</script><script>if(window.mw){
        mw.loader.load(["mediawiki.page.startup"]);
}
</script><script type="text/javascript" src="Lazarus_1.0_release_notes_files/load_003.php"></script>
<style type="text/css">/*<![CDATA[*/
.source-delphi {line-height: normal;}
.source-delphi li, .source-delphi pre {
        line-height: normal; border: 0px none white;
}
/**
 * GeSHi Dynamically Generated Stylesheet
 * --------------------------------------
 * Dynamically generated stylesheet for delphi
 * CSS class: source-delphi, CSS id: 
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 * --------------------------------------
 */
.delphi.source-delphi .de1, .delphi.source-delphi .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.delphi.source-delphi  {font-family:monospace;}
.delphi.source-delphi .imp {font-weight: bold; color: red;}
.delphi.source-delphi li, .delphi.source-delphi .li1 {font-weight: normal; vertical-align:top;}
.delphi.source-delphi .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.delphi.source-delphi .li2 {font-weight: bold; vertical-align:top;}
.delphi.source-delphi .kw1 {color: #000000; font-weight: bold;}
.delphi.source-delphi .kw2 {color: #000000; font-weight: bold;}
.delphi.source-delphi .kw3 {color: #000066;}
.delphi.source-delphi .kw4 {color: #000066; font-weight: bold;}
.delphi.source-delphi .co1 {color: #808080; font-style: italic;}
.delphi.source-delphi .co2 {color: #008000; font-style: italic;}
.delphi.source-delphi .coMULTI {color: #808080; font-style: italic;}
.delphi.source-delphi .es0 {color: #ff0000; font-weight: bold;}
.delphi.source-delphi .br0 {color: #000066;}
.delphi.source-delphi .sy0 {color: #000066;}
.delphi.source-delphi .sy1 {color: #000066;}
.delphi.source-delphi .sy2 {color: #000066;}
.delphi.source-delphi .sy3 {color: #000066;}
.delphi.source-delphi .st0 {color: #ff0000;}
.delphi.source-delphi .nu0 {color: #0000ff;}
.delphi.source-delphi .me1 {color: #006600;}
.delphi.source-delphi .re0 {color: #9ac;}
.delphi.source-delphi .re1 {color: #ff0000;}
.delphi.source-delphi .ln-xtra, .delphi.source-delphi li.ln-xtra, .delphi.source-delphi div.ln-xtra {background-color: #ffc;}
.delphi.source-delphi span.xtra { display:block; }

/*]]>*/
</style></head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Lazarus_1_0_release_notes action-view skin-monobook">
<div id="globalWrapper">
<div id="column-content"><div id="content"><div style="display: none;" class="js-messagebox" id="mw-js-message"></div>
        <a id="top"></a>
        
        <h1 id="firstHeading" class="firstHeading">Lazarus 1.0 release notes</h1>
        <div id="bodyContent">
                <div id="siteSub">From Lazarus wiki</div>
                <div id="contentSub"></div>
                <div id="jump-to-nav">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div>
                <!-- start content -->
<div dir="ltr" class="mw-content-ltr" lang="en"><p>Statistics:
</p>
<ol><li> commits: 7872
</li><li> resolved bug tracker issues: 487
</li></ol>
<table id="toc" class="toc"><tbody><tr><td><div id="toctitle"><h2>Contents</h2><span class="toctoggle"> [<a href="#" class="internal" id="togglelink">hide</a>] </span></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#LCL_Interfaces_Changes"><span class="tocnumber">1</span> <span class="toctext">LCL Interfaces Changes</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#LCL_Changes"><span class="tocnumber">2</span> <span class="toctext">LCL Changes</span></a>
<ul>
<li class="toclevel-2 tocsection-3"><a href="#Known_Issues"><span class="tocnumber">2.1</span> <span class="toctext">Known Issues</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-4"><a href="#LazUtils_Changes"><span class="tocnumber">3</span> <span class="toctext">LazUtils Changes</span></a></li>
<li class="toclevel-1 tocsection-5"><a href="#IDE_Changes"><span class="tocnumber">4</span> <span class="toctext">IDE Changes</span></a></li>
<li class="toclevel-1 tocsection-6"><a href="#Components"><span class="tocnumber">5</span> <span class="toctext">Components</span></a>
<ul>
<li class="toclevel-2 tocsection-7"><a href="#Codetools"><span class="tocnumber">5.1</span> <span class="toctext">Codetools</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#TAChart"><span class="tocnumber">5.2</span> <span class="toctext">TAChart</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="#SQLDB"><span class="tocnumber">5.3</span> <span class="toctext">SQLDB</span></a></li>
<li class="toclevel-2 tocsection-10"><a href="#ChmHelpPkg"><span class="tocnumber">5.4</span> <span class="toctext">ChmHelpPkg</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-11"><a href="#Changes_affecting_compatibility"><span class="tocnumber">6</span> <span class="toctext">Changes affecting compatibility</span></a>
<ul>
<li class="toclevel-2 tocsection-12"><a href="#Installer_.2F_Upgrading_from_0.9.26_or_older_on_MS_Windows"><span class="tocnumber">6.1</span> <span class="toctext">Installer / Upgrading from 0.9.26 or older on MS Windows</span></a></li>
<li class="toclevel-2 tocsection-13"><a href="#TCustomForm.Create_raises_an_exception_if_resource_is_not_found"><span class="tocnumber">6.2</span> <span class="toctext">TCustomForm.Create raises an exception if resource is not found</span></a></li>
<li class="toclevel-2 tocsection-14"><a href="#LM_DEACTIVATE_message_is_removed"><span class="tocnumber">6.3</span> <span class="toctext">LM_DEACTIVATE message is removed</span></a></li>
<li class="toclevel-2 tocsection-15"><a href="#TCompileReason_or_TLazCompilerOptions_not_found"><span class="tocnumber">6.4</span> <span class="toctext">TCompileReason or TLazCompilerOptions not found</span></a></li>
<li class="toclevel-2 tocsection-16"><a href="#Two_packages_which_share_their_unit_output_directory_give_.22unit_not_found.22.2C_because_the_IDE_deletes_the_ppu_files"><span class="tocnumber">6.5</span> <span class="toctext">Two packages which share their unit output directory give "unit not found", because the IDE deletes the ppu files</span></a></li>
<li class="toclevel-2 tocsection-17"><a href="#SourceEditorIntf"><span class="tocnumber">6.6</span> <span class="toctext">SourceEditorIntf</span></a></li>
<li class="toclevel-2 tocsection-18"><a href="#SynEdit"><span class="tocnumber">6.7</span> <span class="toctext">SynEdit</span></a>
<ul>
<li class="toclevel-3 tocsection-19"><a href="#SynEdit:_Changes_to_WantTabs"><span class="tocnumber">6.7.1</span> <span class="toctext">SynEdit: Changes to WantTabs</span></a></li>
<li class="toclevel-3 tocsection-20"><a href="#SynEdit:_Changes_to_Options.2C_MouseOptions"><span class="tocnumber">6.7.2</span> <span class="toctext">SynEdit: Changes to Options, MouseOptions</span></a></li>
<li class="toclevel-3 tocsection-21"><a href="#SynEdit:_Changes_to_MouseActions"><span class="tocnumber">6.7.3</span> <span class="toctext">SynEdit: Changes to MouseActions</span></a></li>
<li class="toclevel-3 tocsection-22"><a href="#SynEdit:_BeginUpdate_adds_UndoBlock"><span class="tocnumber">6.7.4</span> <span class="toctext">SynEdit: BeginUpdate adds UndoBlock</span></a></li>
<li class="toclevel-3 tocsection-23"><a href="#SynEdit:_Several_deprecated_methods_were_removed"><span class="tocnumber">6.7.5</span> <span class="toctext">SynEdit: Several deprecated methods were removed</span></a></li>
<li class="toclevel-3 tocsection-24"><a href="#SynEdit:_MouseLinkColor_and_the_underline"><span class="tocnumber">6.7.6</span> <span class="toctext">SynEdit: MouseLinkColor and the underline</span></a></li>
<li class="toclevel-3 tocsection-25"><a href="#SynEdit:_TSynCustomFoldHighlighter"><span class="tocnumber">6.7.7</span> <span class="toctext">SynEdit: TSynCustomFoldHighlighter</span></a></li>
<li class="toclevel-3 tocsection-26"><a href="#SynEdit:_TSynCompletion.2C_TSynAutoCompletion_and_TSynEditAutoComplete"><span class="tocnumber">6.7.8</span> <span class="toctext">SynEdit: TSynCompletion, TSynAutoCompletion and TSynEditAutoComplete</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-27"><a href="#TCustomNotebook_was_moved_from_ExtCtrls_to_ComCtrls"><span class="tocnumber">6.8</span> <span class="toctext">TCustomNotebook was moved from ExtCtrls to ComCtrls</span></a></li>
<li class="toclevel-2 tocsection-28"><a href="#TCustomNotebook_was_renamed_to_TCustomTabControl"><span class="tocnumber">6.9</span> <span class="toctext">TCustomNotebook was renamed to TCustomTabControl</span></a></li>
<li class="toclevel-2 tocsection-29"><a href="#TCustomPageControl.2FTPageControl.OnPageChanged_were_removed"><span class="tocnumber">6.10</span> <span class="toctext">TCustomPageControl/TPageControl.OnPageChanged were removed</span></a></li>
<li class="toclevel-2 tocsection-30"><a href="#Support_for_the_shift_states_ssCaps.2C_ssNum_and_ssScroll_was_removed_from_OnMouseWheel."><span class="tocnumber">6.11</span> <span class="toctext">Support for the shift states ssCaps, ssNum and ssScroll was removed from OnMouseWheel.</span></a></li>
<li class="toclevel-2 tocsection-31"><a href="#TDBEdit_use_EditMask_property_of_the_linked_Field."><span class="tocnumber">6.12</span> <span class="toctext">TDBEdit use EditMask property of the linked Field.</span></a></li>
<li class="toclevel-2 tocsection-32"><a href="#ENTER_Key_behavior_on_String_Editor"><span class="tocnumber">6.13</span> <span class="toctext">ENTER Key behavior on String Editor</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-33"><a href="#Previous_release_notes"><span class="tocnumber">7</span> <span class="toctext">Previous release notes</span></a></li>
</ul>
</td></tr></tbody></table>
<h2> <span class="mw-headline" id="LCL_Interfaces_Changes"> LCL Interfaces Changes </span></h2>
<ul><li>Gtk2: Implemented LCLIntf.CreateEllipticRgn and 
CreateRoundRectRgn and implemented SetWindowRgn for TForm (previously it
 worked only for child controls)
</li><li>WinCE: Implemented TSelectDirectoryDialog
</li><li>A new interface was added called LCL-CustomDrawn which 
implements all native controls via the Lazarus Custom Drawn Controls. 
This interface has a minimal amount 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.
</li><li>Qt: implemented full MDI support.
</li></ul>
<h2> <span class="mw-headline" id="LCL_Changes"> LCL Changes </span></h2>
<ul><li>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.
</li><li>The platform independent parts of the LCL are now in the package LCLBase. This has no impact on existing projects.
</li><li>The linker options needed by the LCL are now <b>only</b> added to projects that use the package LCL. Formerly all projects got them. See <a href="http://wiki.lazarus.freepascal.org/The_LCL_in_various_platforms#Linker_options" title="The LCL in various platforms">here</a>.
</li><li>TCustomForm.Create raises an exception if form resource is not found.
</li><li>TNotebook and TPage: The new implementations of these classes have been added.
</li><li>TDBNavigator: It is now possible to have focusable buttons by 
setting Options = [navFocusableButtons] and TabStop = True. This is 
useful for accessibility and for devices without a mouse nor touch 
screen.
</li><li>TControlBorderSpacing.GetSideSpace and GetSpace were swapped and are now consistent. GetSideSpace = Around + GetSpace.
</li><li>TForm.WindowState=wsFullscreen was added
</li><li>TCanvas.TextFitInfo was added to calculate how many characters 
will fit into a specified Width. Useful for word-wrapping calculations.
</li><li>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.
</li><li>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.
</li><li>TTabControl was reorganized. Now it has the correct class hierarchy and inherits from TCustomTabControl like it is supposed to.
</li><li>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.
</li><li>New unit in the LCL: lazdeviceapis.pas. This unit offers an 
interface to more hardware devices such as the accelerometer, GPS, etc. 
See <a href="http://wiki.lazarus.freepascal.org/LazDeviceAPIs" title="LazDeviceAPIs">LazDeviceAPIs</a>
</li><li>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.
</li><li>New unit in the LCL: lazregions.pas. LazRegions is a purely 
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.
</li><li>New LCL units: customdrawncontrols.pas, customdrawndrawers.pas,
 customdrawn_common.pas, customdrawn_android.pas and 
customdrawn_winxp.pas. These are the <a href="http://wiki.lazarus.freepascal.org/Lazarus_Custom_Drawn_Controls" title="Lazarus Custom Drawn Controls">Lazarus Custom Drawn Controls</a>, which are controls which imitate the standard LCL ones, but with the difference that they are non-native and skinnable.
</li><li>New APIs were added to the LCL to improve our support for accessibility software such as screen readers. Read more in <a href="http://wiki.lazarus.freepascal.org/LCL_Accessibility" title="LCL Accessibility">LCL Accessibility</a>
</li></ul>
<h3> <span class="mw-headline" id="Known_Issues"> Known Issues </span></h3>
<ul><li>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.
</li><li>Ubuntu's Unity liboverlay library does not work well with the LCL. See <a href="http://wiki.lazarus.freepascal.org/GTK2_Interface#Quick_start_guide_for_Linux.2C_FreeBSD.2C_etc" title="GTK2 Interface">here</a>
</li></ul>
<h2> <span class="mw-headline" id="LazUtils_Changes"> LazUtils Changes </span></h2>
<ul><li>LazUtils and the LCL now contain a 100% Pascal implementation of
 text rendering which can read TrueType fonts and draw nice texts with 
ClearType anti-aliasing. This library is called <a href="http://wiki.lazarus.freepascal.org/LazFreeType" title="LazFreeType">LazFreeType</a> and is almost entirely in LazUtils except for 1 unit which is in the LCL which is a drawer unit.
</li></ul>
<h2> <span class="mw-headline" id="IDE_Changes"> IDE Changes </span></h2>
<ul><li> The old warnings at IDE start for Lazarus directory, compiler 
and FPC sources were replaced with one dialog. The dialog can be forced 
to show with the command line parameter <b>--setup</b>.
</li><li> 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.
</li><li> The IDE no longer asks to save changes, if only the session 
data has changed (i.e. cursor positions) and the session is saved in the
 separate lps file. You can enable the confirmation in Tools / Options /
 Desktop / Auto Save. See [<a rel="nofollow" class="external text" href="http://wiki.lazarus.freepascal.org/IDE_Window:_Environment_Options#Auto_Save">here</a>].
</li><li> 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 <a href="http://wiki.lazarus.freepascal.org/Macros_and_Conditionals#Add_a_release.2Fdebug_mode" title="Macros and Conditionals">examples</a>.
</li><li> 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.
</li><li> Packages compiled via Makefile created by the IDE are now recognized by the IDE and only recompiled if something changed.
</li><li> Package general and package compiler options are now using generic IDE options interface.
</li><li> New dialog to <a href="http://wiki.lazarus.freepascal.org/IDE_Window:_Clean_up_build_files_dialog" title="IDE Window: Clean up build files dialog">clean up build files</a>, including all packages of the project
</li><li> 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 (<a href="http://wiki.lazarus.freepascal.org/Lazarus_Packages#The_theory" title="Lazarus Packages">See packages</a>).
</li><li> Open File: filter list is now configurable in Tools / Options / Environment / <a href="http://wiki.lazarus.freepascal.org/IDE_Window:_Environment_Options#File_Filters" title="IDE Window: Environment Options">File Filters</a>
</li><li> Export to html
</li><li> Editor:
<ul><li> 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.
</li><li> Codefolding: Ability to hide (fold) the currently selected text. These folds are not saved to the session
</li><li> Improved Mouse wheel support: Allows to zoom the editor (ctrl 
wheel) and slower/faster scrolling (shift/alt). Keys can be 
reconfigured.
</li><li> Basic Macro-Recorder. (Only one Editor can record at a time, Macro can then be played to any editor)
</li><li> Info-Hint, showing the current class/procedure on top of the editor, if it would otherwise be scrolled out
</li></ul>
</li><li>Debugger
<ul><li> Added display format for CPU-Register
</li><li> Added Pascal Source to Disassembler
</li><li> Added breakpoints, (display and toggle) to Disassembler
</li><li> Added Thread dialog
</li><li> Added Watchpoints (data breakpoints)
</li><li> History of Watches and Locals [<a rel="nofollow" class="external text" href="http://lazarus-dev.blogspot.com/2011/05/remember-remember-history-of-debugging.html">see blog</a>]
</li><li> Added logging of most of events (Event Log)
</li><li> Added ability for a breakpoint (breaking or none-breaking) to enable/disable other breakpoints
</li><li> Watch/Inspect the an object as the instantiated class.
</li></ul>
</li><li> Main menu structure got revamped. Source menu and its Refactor sub-menu are new.
</li><li> New menu item to insert MIT license text 
</li><li> 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.
</li><li> "Use Unit" (Alt-F11) dialog allows selecting from all available units, not only project units.
</li><li> <a href="http://wiki.lazarus.freepascal.org/Lazarus_IDE_Tools#Parameter_Hints" title="Lazarus IDE Tools">Parameter Hints</a> now have a button to paste the missing parameter names.
</li><li> Code Explorer: Filter now deletes nodes, instead of marking.
</li><li> Code Explorer: New category "Surrounding" allows to quickly jump to interface, implementation and nested procedures.
</li><li> Help for keywords: The chmhelp package can now show help for keywords.
</li><li> New window: Tools -> "Example Projects"
</li><li> Window: View -> Components was improved and it can be opened from Component palette's local menu
</li><li> 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.
</li><li> startlazarus now supports the --pcp parameter allowing multiple installations of Lazarus.
</li><li> <a href="http://wiki.lazarus.freepascal.org/lazbuild" title="lazbuild">lazbuild</a>
<ul><li>can now create/update the Makefile of a package with the new option --create-makefile.
</li><li>--build-ide= now builds under Windows lazarus.exe, not lazarus.new.exe
</li><li>--build-ide= now appends the options instead of replacing.
</li><li>--build-mode= can now be used together with --build-ide to select the build profile of the IDE.
</li></ul>
</li><li><b>Design time only packages</b> are no longer compiled into projects, unless enabled. See <a href="http://wiki.lazarus.freepascal.org/Lazarus_Packages#Design_Time_vs_Run_Time_package" title="Lazarus Packages">here</a>.
</li><li> New package type <b>Runtime only, can not be installed in IDE</b>. Use this to for package incompatible with the LCL or the IDE. See <a href="http://wiki.lazarus.freepascal.org/Lazarus_Packages#Design_Time_vs_Run_Time_package" title="Lazarus Packages">here</a>.
</li><li> When creating a new package the option to <a href="http://wiki.lazarus.freepascal.org/IDE_Window:_Package_Options#Add_package_unit_to_uses_section" title="IDE Window: Package Options">Add to the uses section of the project</a> is now disabled by default.
</li><li> New menu item to quickly create a new component: Package / New component.
</li><li> New macros: <b>PrimaryConfigPath</b>, <b>SecondaryConfigPath</b>, <b>FallbackOutputRoot</b>, <b>PkgName</b>. See <a href="http://wiki.lazarus.freepascal.org/IDE_Macros_in_paths_and_filenames#Paths_and_Parts" title="IDE Macros in paths and filenames">IDE Macros</a>
</li><li> The IDE interface unit <b>projectintf</b> was split into projectintf and <b>compoptsintf</b>.
 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.
</li><li> 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.
</li><li> 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.
</li><li> Project title can now contain macros
</li><li> 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.
</li><li> 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,
</li><li> When putting a new frame on a form the IDE now allows to select from frames in packages.
</li><li> A dialog was added to see which package/project needs rebuilding and why: View / IDE Internals / What needs Building
</li><li> Pasting multiple components on a designer form now keeps references between them
</li></ul>
<h2> <span class="mw-headline" id="Components"> Components </span></h2>
<h3> <span class="mw-headline" id="Codetools"> Codetools </span></h3>
<ul><li>Parsing, searching and code completion of <b>class operators</b> and <b>advanced records</b>.
</li><li>Parsing <b>objcclass external</b> syntax.
</li><li>Parsing and class completion of <b>nested classes</b>. Searching is not yet fully implemented.
</li><li>Parsing of class sections <b>type</b>, <b>const</b>, <b>var</b>, <b>class var</b>. Searching is not yet fully implemented.
</li><li>Parsing <b>delphi style generics</b>. Searching in spezialized types is not yet fully implemented.
</li><li>Parsing <b>jvm</b> syntax.
</li><li>ctnClassType, ctnClassConst, ctnClassVar were removed and replaced with ctnTypeSection, ctnConstSection, ctnVarSection.
</li><li>The class sub sections ctnTypeSection, ctnConstSection, ctnVarSection are now children of the visibility sections.
</li><li>New IDE package for advanced Codetools: <a href="http://wiki.lazarus.freepascal.org/Cody" title="Cody">Cody</a>.
</li><li>Find declaration: "inherited;"
</li><li>Identifier completion:
<ul><li>for compiler directives: keywords and FPC macros.
</li><li>IDE option to replace only the prefix instead of the whole 
identifier (Tools / Options / Codetools / Identifier Completion / 
Replace whole identifier).
</li><li>more keywords for programs, libraries and properties
</li></ul>
</li><li>Code completion:
<ul><li>now creates variables from pointer parameters, e.g. <i>CreateIconIndirect(@IconInfo)</i> will create <i>var IconInfo:TIconInfo;</i>. See <a href="http://wiki.lazarus.freepascal.org/Lazarus_IDE_Tools#Variable_Declaration_Completion" title="Lazarus IDE Tools">here</a>.
</li><li>now creates procedures/methods from parameters, e.g. <i>List.Sort(@MySortFunction)</i> will create the new function <i>MySortFunction(Item1, Item2: Pointer): Integer</i>. See <a href="http://wiki.lazarus.freepascal.org/Lazarus_IDE_Tools#Event_Assignment_Completion" title="Lazarus IDE Tools">here</a>.
</li></ul>
</li></ul>
<h3> <span class="mw-headline" id="TAChart"> TAChart </span></h3>
<ul><li> Wiki <a href="http://wiki.lazarus.freepascal.org/TAChart_documentation" title="TAChart documentation">documentation</a>
</li><li> On{Before|After}Draw{BackWall|Background}, OnExtentChanged events for TChart
</li><li> Antialiasing
</li><li> TChartAxis:
<ul><li> MarkPositions to implement labels-inside bars and pies
</li><li> <b>Minor axis</b> ticks and grid
</li><li> AxisPen and Range properties
</li><li> Intervals property to control <b>interval size</b>
</li><li> Margin property
</li></ul>
</li><li> TChartAxisMarks:
<ul><li> Stripes property to create "striped" chart background
</li><li> YIndex property to implement labels for stacked series
</li><li> Range property
</li></ul>
</li><li> TFuncSeries now correctly work with rotation and axis transformation
</li><li> <b>5 new series</b>:
<ul><li> Open-High-Low-Close, B-spline, Cubic spline, Polar, Fit
</li></ul>
</li><li> 3D pie series, TPieSeries.EdgePen property
</li><li> Multi-line mark labels, title and footer rotation
</li><li> <b>6 new tools</b>:
<ul><li> TDataPointClickTool, TDataPointHintTool, TDataPointCrosshairTool, TZoomMouseWheelTool, TPanMouseWheelTool, TUserDefinedTool
</li><li> TBasicPanTool.LimitToExtent property
</li></ul>
</li><li> Drag-zoom and crosshair (former reticule) now should work on Qt and MacOS
</li><li> KeyDown/KeyUp/MouseWheel events for chart tools
</li><li> New transformations: TCumulNormDistrAxisTransform, TUserDefinedAxisTransform
</li><li> New data source: TIntervalChartSource
</li><li> TCalculatedChartSource: derivative and smooth derivative, AccumulationDirection
</li><li> Series can now skip NaN values
</li><li> New IChartDrawer API with various <b>drawing back-ends</b>:
<ul><li> AggPas (separate package)
</li><li> Printer, for printing charts with appropriate scaling (separate package)
</li><li> OpenGL
</li><li> FPCanvas/NoGUI, for using in web servers
</li><li> SVG
</li><li> BGRABitmap (separate package)
</li><li> Windows Metafile (separate package)
</li><li> FPVectorial (separate package)
</li></ul>
</li><li> Navigation components: TChartNavScrollBar, TChartNavPanel
</li><li> Legend:
<ul><li> Item format
</li><li> Multiple columns, fill direction
</li><li> Ordering and grouping
</li><li> SymbolFrame property
</li><li> OnCreate event
</li></ul>
</li><li> New components: TChartListbox, TChartExtentLink, TChartImageList
</li><li> Enumerators
</li><li> Arrow property for TConstantLine and TChartAxis
</li><li> TChart.MarginsExternal and ExtentSizeLimit properties
</li><li> Design-time editor for TListChartSource.DataPoints
</li><li> <b>17 new demo projects</b>, many updates to existing demos
</li><li> Backwards-incompatible changes:
<ul><li> Adding Pie series does not automatically hide axises any longer
</li><li> TZoomDragTool.Proportional property is replaced by RatioLimit, allowing single-axis zooming
</li><li> TReticuleTool, TChart.ReticuleMode, TChart.ReticulePos and 
TChart.OnDrawReticule are deprecated and will be removed, use 
TDataPointCrosshairTool instead
</li></ul>
</li></ul>
<h3> <span class="mw-headline" id="SQLDB">SQLDB</span></h3>
<ul><li>Added mssql connectors (supports Microsoft SQL Server), requires fpc 2.6.1+
</li><li>Added sybase connectors (supports Sybase ASE), requires fpc 2.6.1+
</li><li>Added mysql 5.5 connector, requires fpc 2.6.1+
</li></ul>
<h3> <span class="mw-headline" id="ChmHelpPkg">ChmHelpPkg</span></h3>
<ul><li>HelpFilesPath can now contain macros and multiple directories separated by semicolon
</li></ul>
<h2> <span class="mw-headline" id="Changes_affecting_compatibility"> Changes affecting compatibility </span></h2>
<h3> <span class="mw-headline" id="Installer_.2F_Upgrading_from_0.9.26_or_older_on_MS_Windows"> Installer / Upgrading from 0.9.26 or older on MS Windows </span></h3>
<p>As 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.
</p><p>As of 1.0 the installer will always overwrite such files without asking.
</p><p>If 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)
</p><p>Background: 
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.
</p>
<h3> <span class="mw-headline" id="TCustomForm.Create_raises_an_exception_if_resource_is_not_found"> TCustomForm.Create raises an exception if resource is not found </span></h3>
<ul><li><b>Reason</b>: 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.
</li><li><b>Remedy</b>: If you need a resourceless form you have 3 options: 
<ul><li> Create a TForm class (not a descendant) 
</li><li> Construct your form using the CreateNew() constructor. 
</li><li> It is also possible to disable the exception by setting the global variable RequireDerivedFormResource to False.
</li></ul>
</li></ul>
<p><a rel="nofollow" class="external text" href="http://lists.lazarus.freepascal.org/pipermail/lazarus/2011-February/060229.html">See also</a>
</p>
<h3> <span class="mw-headline" id="LM_DEACTIVATE_message_is_removed"> LM_DEACTIVATE message is removed </span></h3>
<ul><li><b>Reason</b>: Both LM_ACTIVATE and LM_DEACTIVATE had Active 
field which have WA_ACTIVE, WA_INACTIVE flags. Also this is more VCL 
compatible solution.
</li><li><b>Remedy</b>: 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
</li></ul>
<h3> <span class="mw-headline" id="TCompileReason_or_TLazCompilerOptions_not_found"> TCompileReason or TLazCompilerOptions not found </span></h3>
<ul><li><b>Reason</b>: 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.
</li><li><b>Remedy</b>: Add unit <b>compoptsintf</b> to the uses section.
</li></ul>
<h3> <span class="mw-headline" id="Two_packages_which_share_their_unit_output_directory_give_.22unit_not_found.22.2C_because_the_IDE_deletes_the_ppu_files"> Two packages which share their unit output directory give "unit not found", because the IDE deletes the ppu files </span></h3>
<ul><li><b>Reasons:</b> 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.
</li><li><b>Remedy:</b> 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).
</li></ul>
<h3> <span class="mw-headline" id="SourceEditorIntf"> SourceEditorIntf </span></h3>
<dl><dt>SrcEditorIntf.SourceEditorWindow</dt><dd> removed, see <a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.30_release_notes#SourceEditorIntf" title="Lazarus 0.9.30 release notes">0.9.30 release notes</a>, use SrcEditorIntf.SourceEditorManagerIntf
</dd></dl>
<h3> <span class="mw-headline" id="SynEdit"> SynEdit </span></h3>
<h4> <span class="mw-headline" id="SynEdit:_Changes_to_WantTabs"> SynEdit: Changes to WantTabs </span></h4>
<p>The default for WantTabs changed from False to True. If set to "False" Tab and Shift-Tab are now ignored.
</p><p>The 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)
</p><p>The 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)
</p><p><br>
</p>
<h4> <span class="mw-headline" id="SynEdit:_Changes_to_Options.2C_MouseOptions"> SynEdit: Changes to Options, MouseOptions </span></h4>
<p>All mouse related flags from the property Options were moved to MouseOptions. These are: 
</p>
<pre> eoAltSetsColumnMode, eoDragDropEditing, eoRightMouseMovesCursor, eoDoubleClickSelectsLine, eoShowCtrlMouseLinks
</pre>
<p>The new flags start with "em".
</p><p>The old flags still exists (but should be considered deprecated). 
</p>
<ul><li> <b>Changes</b> to the old values are forwarded to the new MouseOptions
</li><li> Setting Options, but keeping the (all/some) mouse related 
flags as they currently were in Options (even if different from 
MouseOptions) will <b>not</b> update MouseOptions.
</li><li> Setting a value in MouseOptions to true, will not update Options.
</li><li> Clearing a value in MouseOptions (set to false) will update 
(clear) Options. But only if it was set in MouseOptions before 
(changed).
</li></ul>
<p>Old code should work as before, no changes needed. As soon as MouseOptions is used (write access), code may need to be adapted.
</p>
<h4> <span class="mw-headline" id="SynEdit:_Changes_to_MouseActions"> SynEdit: Changes to MouseActions </span></h4>
<p>A new flag was introduced:
emUseMouseActions im SynEdit.MouseActions
</p><p>Custom MouseActions are now only used, if this is set.
</p><p>Changes required:
If you use MouseActions different from the flags in MouseOptions (was Options), them enable this flag.
</p>
<h4> <span class="mw-headline" id="SynEdit:_BeginUpdate_adds_UndoBlock"> SynEdit: BeginUpdate adds UndoBlock </span></h4>
<ul><li> <b> This changes do not affect the usage of SynEdit via the designer </b>
</li></ul>
<p>Calling SynEdit.BeginUpdate, now includes creating an undo-block. 
This means all changes made during the update will be one entry in the 
undo list.
</p><p>Changes required:
If the old behaviour is required, call SynEdit.BeginUpdate(False); the 
EndUpdate does not require any change, it adapts automatically.
</p>
<h4> <span class="mw-headline" id="SynEdit:_Several_deprecated_methods_were_removed"> SynEdit: Several deprecated methods were removed </span></h4>
<ul><li> <b> This changes do not affect the usage of SynEdit via the designer </b>
</li></ul>
<dl><dt>SynEdit.SetSelWord</dt><dd> removed, use SynEdit.SelectWord
</dd><dt>SynEdit.CtrlMouseActive</dt><dd> removed, the property was a 
dummy property for some time with no value. Information can be retrieved
 via  
TSynEditMarkupCtrlMouseLink(SynEdit.MarkupByClass[TSynEditMarkupCtrlMouseLink]).IsMouseOverLink
</dd><dt>SynEdit.GutterWidth</dt><dd> removed, use SynEdit.Gutter.Width
</dd><dt>SynEdit.CFDividerDrawLevel</dt><dd> removed, only worked with SynPasSyn. See TSynPasSyn for configuration
</dd><dt>SynEditHighlighter.DividerDrawLevel</dt><dd> removed
</dd><dt>SynEditLines(SynEdit.Lines).DosFileFormat</dt><dd> removed, use FileLineEndType and FileWriteLineEndType
</dd><dt>TSynEditMarkList (Bookmarks)</dt><dd> First / 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
</dd><dt>TSynEditMarkList (Bookmarks)</dt><dd>  GetMarksForLine, removed, use Line[n] property
</dd></dl>
<h4> <span class="mw-headline" id="SynEdit:_MouseLinkColor_and_the_underline"> SynEdit: MouseLinkColor and the underline </span></h4>
<p>SynEdit no longer automatically underlines a link with MouseLinkColor.Foreground.
</p><p>Instead MouseLinkColor.Foreground is only used for the text foreground-color.
To get the underline the following should be added/configured:
</p>
<pre>   MouseLinkColor.FrameColor := MouseLinkColor.Foreground;
   MouseLinkColor.FrameStyle := slsSolid;
   MouseLinkColor.FrameEdges := sfeBottom;
   MouseLinkColor.FramePriority := 9999;  // make sure it is on top of all other frames
</pre>
<h4> <span class="mw-headline" id="SynEdit:_TSynCustomFoldHighlighter"> SynEdit: TSynCustomFoldHighlighter </span></h4>
<ul><li> <b> This changes do not affect the usage of SynEdit via the designer </b>
</li></ul>
<dl><dd> This may affect users who wrote their own highlighter *fold* support (inherited from TSynCustomFoldHighlighter)
</dd><dd> This may affect users, who access such a highlighter from their code, to retrieve fold specific info.
</dd></dl>
<p>FoldNodeInfo and FoldNodeInfoCount
</p>
<dl><dd>Now available via Highlighter.FoldNodeInfo[LineIdx].CountEx([]) and Highlighter.FoldNodeInfo[LineIdx].NodeInfo(Index, [])
</dd></dl>
<p>The following methods where removed:
</p>
<dl><dd> function MinimumFoldLevel(Index: Integer): integer; virtual; abstract;
</dd><dd> function EndFoldLevel(Index: Integer): integer; virtual; abstract;  
</dd></dl>
<p>The following methods where deprecated:
</p>
<dl><dd> function FoldOpenCount(ALineIndex: Integer; AType: Integer = 0): integer;  deprecated;
</dd><dd> function FoldCloseCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;
</dd><dd> function FoldNestCount(ALineIndex: Integer; AType: Integer = 0): integer; deprecated;
</dd><dd>They are also no longer "virtual". Inherited classes must be updated
</dd></dl>
<p>All functionality is now available through:
</p>
<dl><dd> function FoldBlockOpeningCount(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; 
</dd><dd> function FoldBlockClosingCount(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;
</dd><dd> function FoldBlockEndLevel(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;
</dd><dd> function FoldBlockMinLevel(ALineIndex: TLineIdx; const AFilter: TSynFoldBlockFilter): integer; virtual; overload;
</dd></dl>
<p>Please see notes in unit SynEditHighlighterFoldBase
</p>
<h4> <span class="mw-headline" id="SynEdit:_TSynCompletion.2C_TSynAutoCompletion_and_TSynEditAutoComplete"> SynEdit: TSynCompletion, TSynAutoCompletion and TSynEditAutoComplete </span></h4>
<p>Changed base class to be TSynPlugin.
</p><p>This 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)
</p><p>In other words: An owner-less plugin, assumes ownership by it's editor.
</p><p>Solution:
- 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
</p>
<h3> <span class="mw-headline" id="TCustomNotebook_was_moved_from_ExtCtrls_to_ComCtrls"> TCustomNotebook was moved from ExtCtrls to ComCtrls </span></h3>
<ul><li><b>Effects</b>: TCustomNoteBook was moved
</li><li><b>Reason</b>: 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.
</li><li><b>Remedy</b>: 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.
</li></ul>
<p><br>
</p>
<h3> <span class="mw-headline" id="TCustomNotebook_was_renamed_to_TCustomTabControl"> TCustomNotebook was renamed to TCustomTabControl </span></h3>
<ul><li><b>Effects</b>: TCustomNoteBook was renamed
</li><li><b>Reason</b>: 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.
</li><li><b>Remedy</b>: Rename any occurance of TCustomNotebook to TCustomTabControl.
</li></ul>
<h3> <span class="mw-headline" id="TCustomPageControl.2FTPageControl.OnPageChanged_were_removed"> TCustomPageControl/TPageControl.OnPageChanged were removed </span></h3>
<ul><li><b>Effects</b>: TPageControl.OnPageChanged was removed
</li><li><b>Reason</b>: 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 <a rel="nofollow" class="external free" href="http://bugs.freepascal.org/view.php?id=19903">http://bugs.freepascal.org/view.php?id=19903</a>
</li><li><b>Remedy</b>: 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.
</li></ul>
<h3> <span class="mw-headline" id="Support_for_the_shift_states_ssCaps.2C_ssNum_and_ssScroll_was_removed_from_OnMouseWheel."> Support for the shift states ssCaps, ssNum and ssScroll was removed from OnMouseWheel. </span></h3>
<ul><li><b>Previous behaviour</b>: 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.
</li><li><b>Effects</b>: ssCaps, ssNum and ssScroll are now never sent in mouse wheel events.
</li><li><b>Reason</b>: These shift states were implemented very unreliably and only for mouse wheel events and they cannot be implemented reliably.
</li><li><b>Remedy</b>: If you were previously depending on receiving 
the caps lock, num lock, etc, lock state in the win32 interface, use 
this code instead:
</li></ul>
<pre dir="ltr" class="mw-geshi mw-content-ltr"><div class="delphi source-delphi"><pre class="de1"><span class="kw1">uses</span> LCLIntf<span class="sy1">;</span>
 
<span class="kw1">begin</span>
  CapsLock <span class="sy1">:</span><span class="sy3">=</span> LCLIntf<span class="sy1">.</span><span class="me1">GetKeyState</span><span class="br0">(</span>VK_CAPITAL<span class="br0">)</span><span class="sy1">;</span>
  NumLock <span class="sy1">:</span><span class="sy3">=</span> LCLIntf<span class="sy1">.</span><span class="me1">GetKeyState</span><span class="br0">(</span>VK_NUMLOCK<span class="br0">)</span><span class="sy1">;</span>
  ScrollLock <span class="sy1">:</span><span class="sy3">=</span> LCLIntf<span class="sy1">.</span><span class="me1">GetKeyState</span><span class="br0">(</span>VK_SCROLL<span class="br0">)</span><span class="sy1">;</span></pre></div></pre>
<h3> <span class="mw-headline" id="TDBEdit_use_EditMask_property_of_the_linked_Field."> TDBEdit use EditMask property of the linked Field. </span></h3>
<ul><li><b>Previous behaviour</b>: TDBEdit controls used the value stored in EditMask property (inherited from TCustomMaskEdit).
</li><li><b>Effects</b>: TDBEdit.EditMask property will be ignored.
</li><li><b>Reason</b>: Delphi compatibility.
</li><li><b>Remedy</b>: To keep old behavior set CustomEditMask to True
</li></ul>
<h3> <span class="mw-headline" id="ENTER_Key_behavior_on_String_Editor"> ENTER Key behavior on String Editor </span></h3>
<p>The 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.
</p>
<h1> <span class="mw-headline" id="Previous_release_notes"> Previous release notes </span></h1>
<ul><li><a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.30_release_notes" title="Lazarus 0.9.30 release notes">Lazarus 0.9.30 release notes</a>
</li><li><a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.28.2_release_notes" title="Lazarus 0.9.28.2 release notes">Lazarus 0.9.28.2 release notes</a>
</li><li><a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.28_release_notes" title="Lazarus 0.9.28 release notes">Lazarus 0.9.28 release notes</a>
</li><li><a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.26_release_notes" title="Lazarus 0.9.26 release notes">Lazarus 0.9.26 release notes</a>
</li><li><a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.24_release_notes" title="Lazarus 0.9.24 release notes">Lazarus 0.9.24 release notes</a>
</li></ul>

<!-- 
NewPP limit report
Preprocessor node count: 140/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Expensive parser function count: 0/100
-->

<!-- Saved in parser cache with key lazaruswiki:pcache:idhash:6163-0!*!0!!en!*!* and timestamp 20120830150551 -->
</div><div class="printfooter">
Retrieved from "<a href="http://wiki.lazarus.freepascal.org/index.php?title=Lazarus_1.0_release_notes&oldid=61163">http://wiki.lazarus.freepascal.org/index.php?title=Lazarus_1.0_release_notes&oldid=61163</a>"</div>
                <div id="catlinks" class="catlinks"><div id="mw-normal-catlinks"><a href="http://wiki.lazarus.freepascal.org/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="http://wiki.lazarus.freepascal.org/Category:Release_Notes" title="Category:Release Notes">Release Notes</a></li></ul></div></div>              <!-- end content -->
                                <div class="visualClear"></div>
        </div>
</div></div>
<div id="column-one">
        <div id="p-cactions" class="portlet">
                <h5>Views</h5>
                <div class="pBody">
                        <ul>
                                <li id="ca-nstab-main" class="selected"><a href="http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes" title="View the content page [alt-shift-c]" accesskey="c">Page</a></li>
                                <li id="ca-talk" class="new"><a href="http://wiki.lazarus.freepascal.org/index.php?title=Talk:Lazarus_1.0_release_notes&action=edit&redlink=1" title="Discussion about the content page [alt-shift-t]" accesskey="t">Discussion</a></li>
                                <li id="ca-viewsource"><a href="http://wiki.lazarus.freepascal.org/index.php?title=Lazarus_1.0_release_notes&action=edit" title="This page is protected.
You can view its source [alt-shift-e]" accesskey="e">View source</a></li>
                                <li id="ca-history"><a href="http://wiki.lazarus.freepascal.org/index.php?title=Lazarus_1.0_release_notes&action=history" title="Past revisions of this page [alt-shift-h]" accesskey="h">History</a></li>
                        </ul>
                </div>
        </div>
        <div class="portlet" id="p-personal">
                <h5>Personal tools</h5>
                <div class="pBody">
                        <ul>
                                <li id="pt-login"><a href="http://wiki.lazarus.freepascal.org/index.php?title=Special:UserLogin&returnto=Lazarus+1.0+release+notes" title="You are encouraged to log in; however, it is not mandatory [alt-shift-o]" accesskey="o">Log in / create account</a></li>
                        </ul>
                </div>
        </div>
        <div class="portlet" id="p-logo">
                <a title="Visit the main page" style="background-image: url("/skins/pic/lazlogo.gif");" href="http://www.lazarus.freepascal.org/"></a>
        </div>
        <script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
        <div class="generated-sidebar portlet" id="p-navigation">
                <h5>Navigation</h5>
                <div class="pBody">
                        <ul>
                                <li id="n-mainpage"><a href="http://wiki.lazarus.freepascal.org/Main_Page" title="Visit the main page [alt-shift-z]" accesskey="z">Main Page</a></li>
                                <li id="n-documentation"><a href="http://wiki.lazarus.freepascal.org/Lazarus_Documentation">Documentation</a></li>
                                <li id="n-FAQ"><a href="http://wiki.lazarus.freepascal.org/Lazarus_Faq">FAQ</a></li>
                                <li id="n-downloads"><a href="http://wiki.lazarus.freepascal.org/Components_and_Code_examples">Downloads</a></li>
                                <li id="n-glossary"><a href="http://wiki.lazarus.freepascal.org/Glossary">Glossary</a></li>
                                <li id="n-index"><a href="http://wiki.lazarus.freepascal.org/Special:AllPages">Index</a></li>
                                <li id="n-recentchanges"><a href="http://wiki.lazarus.freepascal.org/Special:RecentChanges" title="A list of recent changes in the wiki [alt-shift-r]" accesskey="r">Recent changes</a></li>
                                <li id="n-randompage"><a href="http://wiki.lazarus.freepascal.org/Special:Random" title="Load a random page [alt-shift-x]" accesskey="x">Random page</a></li>
                                <li id="n-help"><a href="http://wiki.lazarus.freepascal.org/Help:Contents" title="The place to find out">Help</a></li>
                        </ul>
                </div>
        </div>
        <div id="p-search" class="portlet">
                <h5><label for="searchInput">Search</label></h5>
                <div id="searchBody" class="pBody">
                        <form action="/index.php" id="searchform">
                                <input name="title" value="Special:Search" type="hidden">
                                <input name="search" title="Search Lazarus wiki [alt-shift-f]" accesskey="f" id="searchInput" type="search">
                                <input name="go" value="Go" title="Go to a page with this exact name if exists" id="searchGoButton" class="searchButton" type="submit"> 
                                <input name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton" type="submit">
                        </form>
                </div>
        </div>
        <div class="portlet" id="p-tb">
                <h5>Toolbox</h5>
                <div class="pBody">
                        <ul>
                                <li id="t-whatlinkshere"><a href="http://wiki.lazarus.freepascal.org/Special:WhatLinksHere/Lazarus_1.0_release_notes" title="A list of all wiki pages that link here [alt-shift-j]" accesskey="j">What links here</a></li>
                                <li id="t-recentchangeslinked"><a href="http://wiki.lazarus.freepascal.org/Special:RecentChangesLinked/Lazarus_1.0_release_notes" title="Recent changes in pages linked from this page [alt-shift-k]" accesskey="k">Related changes</a></li>
                                <li id="t-specialpages"><a href="http://wiki.lazarus.freepascal.org/Special:SpecialPages" title="A list of all special pages [alt-shift-q]" accesskey="q">Special pages</a></li>
                                <li><a href="http://wiki.lazarus.freepascal.org/index.php?title=Lazarus_1.0_release_notes&printable=yes" rel="alternate">Printable version</a></li>
                                <li id="t-permalink"><a href="http://wiki.lazarus.freepascal.org/index.php?title=Lazarus_1.0_release_notes&oldid=61163" title="Permanent link to this revision of the page">Permanent link</a></li>
                        </ul>
                </div>
        </div>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
<div id="footer">
        <div id="f-copyrightico">
                <a href="http://sourceforge.net/"><img src="Lazarus_1.0_release_notes_files/sflogo.png" alt="" height="31" width="88"></a>
        </div>
        <div id="f-poweredbyico">
                <a href="http://www.mediawiki.org/"><img src="Lazarus_1.0_release_notes_files/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" height="31" width="88"></a>
        </div>
        <ul id="f-list">
                <li id="lastmod"> This page was last modified on 30 August 2012, at 15:05.</li>
                <li id="viewcount">This page has been accessed 5,198 times.</li>
                <li id="copyright">Content is available under <a class="external" href="http://sourceforge.net/"></a>.</li>
                <li id="privacy"><a href="http://wiki.lazarus.freepascal.org/Lazarus_wiki:Privacy_policy" title="Lazarus wiki:Privacy policy">Privacy policy</a></li>
                <li id="about"><a href="http://wiki.lazarus.freepascal.org/Lazarus_wiki:About" title="Lazarus wiki:About">About Lazarus wiki</a></li>
                <li id="disclaimer"><a href="http://wiki.lazarus.freepascal.org/Lazarus_wiki:General_disclaimer" title="Lazarus wiki:General disclaimer">Disclaimers</a></li>
        </ul>
</div>
</div>
<script>if(window.mw){
        mw.loader.load(["mediawiki.user", "mediawiki.util", "mediawiki.page.ready", "mediawiki.legacy.wikibits", "mediawiki.legacy.ajax"]);
}
</script><script type="text/javascript" src="Lazarus_1.0_release_notes_files/load_002.php"></script>
<script src="Lazarus_1.0_release_notes_files/load_005.php"></script>
<script>if(window.mw){
        mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"externaldiff":0,"externaleditor":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"highlightbroken":1,"imagesize":2,"justify":0,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"quickbar":5,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":0,"showjumplinks":1,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"monobook","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":0,"watchdefault":0,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,
        "watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"variant":"en","language":"en","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false});;mw.user.tokens.set({"editToken":"+\\","watchToken":false});;mw.loader.state({"user.options":"ready","user.tokens":"ready"});
        
        /* cache key: lazaruswiki:resourceloader:filter:minify-js:4:99acc2c3ab516bb21085c70c2195f3df */
}
</script><!-- Served in 0.069 secs. -->
</body><!-- Cached 20120830150623 --></html>