LMD VCL 2009 - What's New?

From LMD
Revision as of 22:18, 20 October 2008 by Rafael (talk | contribs) (Changes/Enhancements since initial LMD VCL 2007 release)

Jump to: navigation, search

<< Back to Getting started page

[edit]

General

Support for IDEs and operating systems

  • Compatible with Delphi 2009 and C++ Builder 2009 (Tiburon)!
  • Support for Delphi/CBuilder 5+6/Delphi 8 dropped. Result was code cleanup and optimization, because much redundant legacy code could be removed.
  • Win95/ NT 3.5 OS is no longer tested. Supported OS are Win98 and WinNT4 or better. For recent Delphi releases same platforms as the IDE are supported (e.g. Delphi 2009 officially supports Win2k or better only).

Product Configuration

  • Number of LMD-Tools editions was reduced from 4 to 2 (LMD-Tools and LMD-Tools SE)
  • DesignPack and ScriptPack were exclusively moved to LMD IDE-Tools
  • Number of ElPack editions was reduced to 1 (LMD ElPack)

Installers

  • Registered LMD VCL Complete users can now choose to download a full installer including all main products (new feature) or to download main product installers (LMD-Tools, ElPack, IDE-Tools) as before.
  • On request all installers include full demo sets again. Only helpfile packages are available as separate download.

Designtime Features

  • SplashScreen/AboutBox support in Delphi IDE (Delphi 2005 and better).
  • New configuration Dialog added. Use this dialog to specify settings for all LMD Packages. In Win32 IDEs the dialog is also available via Tools Menu.

Common new features

  • Improved shared Unicode support. For existing IDEs, but also in preparation for upcoming CodeGear Delphi 2009 and C++ Builder 2009 releases with native Unicode support.
  • While in pre Delphi/C++ Builder releases Unicode support is based on WideString type, Unicode supported from Tiburon on is based on the faster reference counted UnicodeString.
  • Validator controls: Except TLMDHintErrorProvider (lmdcore package) all Validator and Error Provider controls are now included in lmdrtlx package and can be shared among LMD-Tools and LMD ElPack.
  • Complete Rework of Themes support. LMD-Tools and ElPack share now unified ThemeMode/GlobalThemeMode properties and can be controlled globally. The new theme support is fully generic. If no additional theme support is required, platform themes are used. Using ThemePack any *.MSStyles files can be used. Future LMD VCL releases will add several new custom themes which can be used throughout all packs.

New Packages

  • LMD InspectorPack - Powerful Object Inspector component and derived controls
  • LMD LogTools - Advanced logging services, for use with the AnyLogger client (when available, the local AnyLogger Client will be free for all customers who purchased a main LMD 2009 VCL product (LMD-Tools, LMD ElPack, IDE-Tools or VCL Complete).
  • LMD PluginPack - Plugin Infrastructure for your projects. Allows to extend your applications with custom modules (Win32 only)
  • LMD ThemesPack - Allows usage of MSStyles themes, but unlike previous releases this feature can be enabled/disabled dynamically. No more Theme switches and recompilation of library code, but a separate package which you can decide to use or not at runtime. E.g. creating applications which automatically uses *.MSStyles themes on non-themed platforms (like Win2k) and system themes on themed platforms (like WinXP/Vista) is now a snap.
  • LMD ScriptPack: VCL.NET support added.

Standalone Packs with major updates

  • LMD DesignPack
  • LMD ScriptPack
  • LMD SyntaxEdit
  • LMD WebPack

LMD-Tools

Shared Runtime

  • New ThemesPack, PluginPack and LogTools support
  • TLMDApplication
    • InitXP support method removed (became obsole, ThemeServices.ThemeEnabled can be checked instead)
    • GlobalThemeMode property added
    • ThemeUseColorProperty property (since 8.1)
  • Validator controls: Except TLMDHintErrorProvider (lmdcore package) all Validator and Error Provider controls are now included in lmdrtlx package.
  • LMDUtils.pas / LMDProcs.pas
    • LMDCheckSystemMenu, LMDCheckFormSysMenu and LMDCheckApplicationSysMenu moved to LMDSysMenu.pas
    • LMDPtrToRect, LMDRectToPtr methods -> simplify call of functions with PRect/IntPtr parameters (for simple VCL/VCL.NET compatibility)
  • LMDTypes: -> TLMDTypeData
  • Many VCL dependent units (intfLMDBackGround.pas, intfLMDThemes.pas etc.) were moved from LMDRTL to LMDRTLX package

Main Controls

  • Massive Update of hint controls (-> drawing mechanism, e.g. using regions), functional improvements (like native hints and HTML support) and advanced HintSystem for displaying any number of hints. Besides that hint processing was unified with LMD ElPack (e.g. Unicode support)/TElHint. New features are among others:
    • Titles
    • Icon/Glyph support
    • Customizable close buttons
    • HTML Support (with images, clickable links, etc)
    • Background gradients
    • Customizable hint nose shape
    • Support of system shadows
    • Vista look.
  • N-Hint controls: A new component LMDMessageHintController was introduced. It allows to design a collection of hints and display them all at once or grouped via their group index settings
  • New InspectorPack. Powerful standalone object inspector control. The property inspector has been splitted from the Design Pack into separate LMD Inspector Pack. The TLMDSimplePropertyInspector represents a new designer independend simple property editor, which can be used for objects without designer. This lightweight control can be used, for example, to organize application Options dialogs.

LMD WebPack

  • RSS feed support added. Class - TLMDNewsReaderAdapter, Demo: demos/lmdweb/delphi/LMDWebNews_Rss
  • LMDWebAutoUpdate completely reworked and updated. TLMDUpdateAdapter - Adapter provides the LMDAutoUpdate application, LMDUpdateForm - component to visualize update process.
  • LMDUpdateBuilder - new Application to create update scripts based on XML file format
  • Windows Vista support "as Invoker" added.

LMD ElPack

  • Unified hint system with LMD-Tools.
  • New InspectorPack. Powerful standalone object inspector control. The property inspector has been splitted from the Design Pack into separate LMD Inspector Pack. The TLMDSimplePropertyInspector represents a new designer independend simple property editor, which can be used for objects without designer. This lightweight control can be used, for example, to organize application Options dialogs.
  • TElXCellComboBox - new cell control that can be inserted into a cell of TElXTree (for displaying combo boxes).
  • A lot of property editors were redesigned.
  • ElToolBar.ShowMoreMenu property-


LMD IDE-Tools

DesignPack and IDE-Tools Core

  • New TLMDSimplePropertyInspector control. The property inspector has been splitted from the Design Pack into separated LMD Inspector Pack. The TLMDSimplePropertyInspector represents anew designer independed simple property editor, which can be used for objects without designer. This lightweight control can be used, for example, to organize application Options dialogs. The existing TLMDPropertyInspector control in the Design Pack is now fully designer oriented.
  • New TLMDComponentBar control. BDS like component palette. Works even in Delphi7.
  • Updated TLMDComponentPalette control. Delphi 7 like drop-down list can be shown in cases when there are too many components on the page.
  • It ia now possible to design forms (TCustomForm descendants) in the TLMDDesignPanel. This allows to develop BDS like IDE user interface.
  • New designer ShowRootResizers property allows to show mouse handles to resize the root inside design panel.
  • New global components modification notifications feature allows to synchronize shown in Design Pack controls content without any links between controls. Useful e.g. if for example you move some Vcl control by the designer, the Left and Top property values will be automatically updated in the property inspector. Or: if you rename some Vcl component in property inspector, the object combo box will automatically update shown component name.
  • The global components modification notifications allow to detect when components located inside module root are modified. New TLMDModule.OnCompsModified event can be easily used to detect such modifications, instead of several old events of designer or property inspector.
  • The global components modification notifications allows to provide more correct notifications, finding correct module for the modified component. Imagine that you edit by the property inspector the TClientDataSet component from one module that refers to the TDataSource component from another module. Since the property inspector can edit linked data source component properties (by expanding DataSource property) it is important that as a result of such modification a second module will receive the notification, but not the first one.
  • All design pack controls are now closely oriented to work with designer. So, EditorWindows has been removed from all controls except the TLMDDesigner. All other controls will automatically search for the appropriate designer in cases when the editor window manager is required. There are no connection to service provider required, because it is always possible to map editing control to its module (designer).
  • User request: New TLMDModule.OnGetLoadingCompRef event added to allow to dynamically load modules in the presence of inter module component links. The Vcl allows to do this only starting from Delphi2005, so this event is not available in Delphi7.
  • New TLMDProjectManagerView control: delphi project manager like control. Links to TLMDProjectManager component and shows current project's content.
  • New TLMDDocEditorsView control: Delphi 7 like tabbed control that shows document editors. The control automatically interoperate with linked TLMDProjectManager. The document editors should be developed as a frames, and the only required code is to provide editor frame instance for opening document in the OnCreateEditor event handler.

LMD ScriptPack

  • VCL.NET support for Script
  • Please read RoadMap for planned features in LMD 2009 R2 release.

LMD SyntaxEdit

  • Drag and drop text support.
  • Delphi/Builder 2009 support.
  • Bugfixes and heavy speed enhancements.
  • Please read RoadMap for planned features in LMD 2009 R2 release.

Specific Technical Changes

Source Code Details

This section covers changes which are interesting for source code user only:

  • LMD ParsePack (lmd.parse) files and definitions moved to LMD TextPack (lmd.txt)
  • LMD TextPack DB package removed and added to default TextPack package
  • New LMD_NATIVEUNICODE switch: True for CLR and LMDCOMP12 or better.
  • Because of removed support for Delphi/CBuilder 5+6/Delphi 8, following compiler switches get invalid:
    • LMDCOMP5, LMDCOMP6, LMDCOMP8, LMDCOMP8NET, LMDCOMP9NET, LMDCOMP10NET etc.
    • Delphi5, Delphi6, Delphi8 etc.
    • CPPBUILDER, CPPBUILDER5, CPPBUILDER6. Besides that LMD_SHARED_CODE should no longer be used.
  • Designtime: LMDTOOLS_REGISTRYPATH variable is now located in LMDTypes.pas. Always use this basic reg key (+ specific key) for designtime editors.

Deprecated Files

  • LMDRTL
    • LMDXPThemeManager (obsolete, replaced by LMDThemes).
    • LMDXPStyles (obsolete)
  • LMD-Tools
    • LMDRgnShadow.pas
  • LMD ShellPack
    • LMDShCmp50 (obsolete)
    • LMDShNtfCmn (obsolete)
    • LMDSHXPRes (obsolete)
  • ScriptPack
    • pLMDSctPE.pas
  • StoragePack
    • LMDStorWndProc.pas

DevUtil / Workspaces

  • ParsePack (lmd.parse) files and definitions were moved to TextPack (lmd.txt)
  • LMD TextPack Database package removed and added to default TextPack package


Changes/Enhancements since initial LMD VCL 2007 release

LMD-Tools 9.0

Documentation

[*] Improved Helpfile for shared runtime

New Components

[+] TLMDEditControlPrintTask (PrintPack support)
[+] TLMDMessageHintController (the component for displaying several hints at once)

New properties, methods

LMD-Tools Hint controls

TLMDShapeHint
[*] Drawing routines reworked; both system shadows and custom shadows supported; HTML text with images, clickable links added; many new properties:

[+] CloseBtnType (hcbCustom, hcbToolTip, hcbToolWindow)
[+] CloseBtnStyle (TLMDUserButtonStyle, takes effect when CloseBtnType = hcbCustom)
[+] DefaultTitle
[+] DefaultIcon
[+] NoseAngleWidth
[+] NoseLength
[+] NoseWidth
[+] RoundRectWidth
[+] Options (hoShowTitle, hoShowCloseButton, hoShowIcon, hoRightAngledNose)
[+] ThemeMode (In ttmPlatform mode background is themed)
[+] ThemeGlobalMode
[+] TitleFont
[+] TitleFont3D (3D effects for title)
[+] Gradient
[+] UseGradient
[+] UseSystemShadow

[*] All hint controls derived from TLMDCustomHint support ShowHint and ShowHintControl methods.
[+] New UseScreenHintFont property specifies whether Screen.HintFont setting should be used for displayed hints. If enabled, value of font property won't be stored (results in smaller DFM files).

TLMDNativeHint
[+] New properties - Enabled, MaxWidth and HideAccelChar
[*] TLMDNativeHint is now part of the LMDRTLX shared package and can be used by all packages with use (dcl)lmdrtlx packages (ElPack, ChartPack, RichPack, etc.).

TLMDHint
TLMDHint is now descendant of TLMDCustomShapeHint and supports all applicable new features.
[+] Property IsBalloon added

LMD-Tools Edit controls

TLMDBaseEdit and descendants
[+] Select all on triple mouseclick click added.
[+] LMD native Edit and ComboBox controls: LMDApplication.ThemeUseColorProperty added. After many requests we implemented now support of Color property in themed mode. If your application requires previous behaviour, set somewhere in your code LMDApplication.ThemeUseColorProperty to false (and like before Color property is ignored in themed mode).

TLMDCustomMaskEdit
[+] UnMaskedText property added (allows to read clear text and write text with automatic format according to the current mask) [+] New property ProcessBlankChar has been added. If it is true then user can type in BlankChar and OnUserRule is triggered, otherwise user cannot type in BlankChar directly and OnUserRule is not triggered. TLMDBaseEdit, Search and Replace functionality:
[+] FoundAtPos method for getting first symbol of found string when IsUpdating=true;

Other controls

TLMDAssist
[+] New Options flag - aoSuppressLoadEvent
Specifies whether OnBeforePage event should be generated when assist control is initially shown /loaded from DFM. Flag is set by default, if OnBeforePage event should be generated, disable this flag.
[+] Changes to CustomStrings are now reflected in all situations.

TLMDCustomSwitch and descendants
[+] OnChange event added (triggered when enduser changes checked state)

TLMDButtonBar
[+] ItemParentFont added, font changing logic fixed;
[+] CtlXP property published; themed rendering added;
[+] separate ItemFont property added;
[+] mousewheel handling added;
[+] cursors allow item scrolling and pageup/pagedown allow changing sections now.

TLMDPrintToolBar
[+] BorderWidth property added

TLMDGlyphLabel
[+] GlyphNumber and GlyphColumn properties added

TLMDPageControl
[+] Options property: toShowAccelChar flag added.
[+] Docking support added

TLMDStatusBar
[*] OnMouseDown event -> default behaviour restored

TLMDTrayIcon:
[+] IsMinimized function (useful in connection with Hide-/ShowApplication methods)
[*] Changes for better Delphi/CRS 2007 support (especially MainFormOnTaskBar)
[+] Major enhancements with support for various extended TrayIcon features (available from Win2k and better):
Properties added:
[+]BalloonHint, BalloonTitle, property BalloonTimeout, BalloonFlags and Options
Events added
[+] OnAnimate
Methods added:
[+] function CanShowBallonHint:Boolean; (Balloon hints supported)
[+] function CurrentImageIndex:Integer;
[+] procedure HideBallonHint;
[+] procedure HideApplication;
[+] procedure ShowApplication;
[+] function ShowBalloonHint:Boolean; overload;
[+] function ShowBalloonHint(const aTitle, aHint: String; aFlags: TLMDBalloonFlags = bfNone; aTimeOut: Integer = 10000):Boolean; overload;
[+] procedure Refresh;
[+] procedure SetDefaultIcon;
All new features are demonstrated in the reworked TLMDTrayIcon demo (available for Delphi(.NET)).

Other improvements

Installer
[*] Detection of BDSCOMMONDIR improved (CRS 2007 only).
[*] Redesigned LMDApplication.IsPrevRunning and LMDActivatePrevInstance to work with Delphi 2007

LMDSysIn Unit
[+] itTimeElapsedSinceBoot, itSysLastBootTime added to TLMDInfoType and GetSystemInfoString.

TLMDGradient
[*] Max color count is 65535 now.

LMDHTMLUnit
[+] "N px"-like param implemented in <font size="+6px"> tag. E.g. <font size="6px"> is handled to set font size to exactly 6 pixels.
[*] Special chars set enlarged.
[+] Embedded control (Checkbox and radiobuttons) support added.
[+] <var> and <cite> tags added.
[+] Compatibility fixes (<s>,</s&tg;added; background attr. added);

Other general improvements
[+] LogTools package added (for use with LMD AnyLogger client)
[+] Unicode support improved

LMDUtils Unit
[+] LMDSetForeGroundWindow - improved SetForeGroundWindow method which works correctly on Win98/2K.


LMD Standalone Packs

LMD ChartPack
[+] PrintPack support
[+] TLMDChartCTLine component
[+] TLMDChartPrintTask component
[+] CRS 2007.NET support

LMD RichPack
LMDRTFRuler:
[+] BackColor, MarginColor properties added; [*] EditRect made public.
[+] TLMDRTFRuler: IndentMarkerWidth property added;
[+] PrintPack support
[+] TLMDRichEditPrintTask component

LMD StoragePack
[*] TLMDFormStorage: Component stores original values of forms when shown in minimized/maximized state after application start.
[*] TLMDStorFormStorage: Minor change for better support of MDI forms in connection with TLMDBack/TLMDFormFill

LMD ElPack

New methods, properties, events

TElToolBar
[+] MoreMenuDrawStyle: TDrawStyle property added to define the style of MoreMenu.
[+] MoreMenu collects menu items from ToolButton in case it has an assigned PullDownMenu.

TElXTree, TElXTreeStringGrid
[*] Previously SortSection was used to initialize the section number for sorting. Now all sections with SortMode <> hsmNone are sorted after the Tree is loaded automatically.
[+] Request 'Menu/Grid-Selection-Color unter Vista' implemented
[+] TElXTreeCells: cell controls frees automatically.
[+] OnLinkOver event added. This event occures when mouse cursor moves over the link.
[*] Mouse frame selection redesigned to be more effective and to work when RowSelect is on.
[+] AutoLineVisibleOnly property added (default = false). If this property is set to true, TElXTree defines item's height for visible sections only (ignores invisible header sections).

TElTree
[+] Property UseThemeForSelection added to turn off the themed style of selection in Vista.

TElWideDBLookupComboBox
[*] Ancestor was changed from TCustomElComboBox to TCustomElHTMLComboBox so html-formatted text is now supported.
[*] Images from PNGImageList for disabled buttons drawing changed (to be colored).
[*] TElPanel: use BorderColorFace to manage the color of line when BorderType = fbtColorLineBorder

TElAdvancedPanel
[+] CaptionsSettings properies added: MinButtonTransparent, CloseButtonTransparent
[+] CaptionSettings.Background property added to be possible define such backgrounds as TileBitmap in IDE at designtime.

TElMainMenu, TElPopupMenu
[+] 'Menu/Grid-Selection-Color unter Vista' implemented for DrawStyle = tdsNormal, tdsWindowsXP
[+] New style tdsOffice2003 was added.

TElPageControl
[+] TabMarginLeft, TabMarginRight properties added. Defines the space before and after tabs area.
[+] ShowAccelChar property added (bts 539)
[+] OnDrawTabsBackground: event was added to draw space behind tabs. It has effect only if UseXPThemes is off.


TElImageForm
[+] Property StretchFormRegion added (default = false). Stretches defined region on form's size. Very useful in for systems where dpi <> 96.

TElExplorerBarGroup
[+] Property IsSpecial is added. If this property on, SPECIAL parts are used instead of NORMAL (ex: EBP_SPECIALGROUPBACKGROUND/EBP_NORMALGROUPBACKGROUND).

TElAppBar
[*] Multiple monitor support added.

TElTrayIcon
[*] Multiple monitor support added to make PopupMenu visible only at main monitor.

TElIniFile
[+] ReadWideString can now be used to read both UTF8 and ANSI strings

ElPack edit controls
[+] LMDApplication.ThemeUseColorProperty added. After many requests we implemented now support of Color property in themed mode (like for themed VCL edit controls). If your application requires previous behaviour, set somewhere in your code LMDApplication.ThemeUseColorProperty to false (and like before Color property is ignored in themed mode).
[+] Triple click to select all text added.

TElFolderDialog
[+] bfoAllowEdit option was added to include an edit control in the browse dialog box
TElPanel, TElHTMLPanel
[+] WordWrap property added to support multiline caption.

TElHeader, TElXHeader, TElTree, TElXTree
[*] RightAligned mode redesigned.
TElStyleManager
[+] Possible to define third-level properties ex: CaptionSettings.Font.Color

TElCalculatorEdit, TElCurrencyEdit
[+] Property CalcDlgResetValue : Boolean (default=False) When it is True, the entered numbers will be added to current value, if False - the value will be reset by new.

TElDateTimePicker
[+] edfShortDateShortTime was added in the list of possible formats.

TElPromptDialog
[+] MaxWidth (default 0). The width of dialog will be limited by this value in case it is positive.

TElCalendar,TElDateTimePicker
[+] CustomCalendarNames: TElCustomCalendarNames - possible to set unicode day\month names to be displayed in control.

Other improvements

[*] LMDHTMLUnit: small fix to process font color in links (ex: <a href="test"><font color=clRed>test<font></s> - font must be clRed + LinkColor)
[+] LogTools package added (for use with LMD AnyLogger client)
[*] Installer: Detection of BDSCOMMONDIR improved (CRS 2007 only).
[+] Validation support was added.
[*] Improved Helpfile for shared runtime.

LMD IDE-Tools

New components

Dialog components for Syntax Edit

[+] TLMDEditFindDialog
[+] TLMDEditReplaceDialog
[+] TLMDEditKeybindingsDialog
[+] TLMDEditSyntaxSchemeDialog
[+] TLMDEditColorSchemeDialog
[+] TLMDEditGotoLineDialog

New methods, properties, events

TLMDEditView

[+] New command sedIndentToPrevIndent - indents selection to previous indent value, looking at first upper indented line.
[+] New command sedUnIndentToPrevIndent - unindents selection to previous indent value, searching in upper lines a line with indent less than indent of first selected line.
[+] New command sedBackspaceOrUnindent - if there are only spaces at the left of cursor, then, unindents cursor line to previous indent position. Otherwise, deletes the char left.
[+] Bookmarks now can remember char position in the line.
[+] Scrolling/syntax checking speedup. Good for big documents.
[+] Documentation cleanup/improvement for TLMDRegExp, TLMDHashTable, TLMDStringHashTable
[+] New View commands introduced: sedDeleteLine (Ctrl+Y), sedDeleteToLineEnd (Ctrl+K), sedDeleteToLineWrap (Ctrl+Shit+K)
[+] New Gutter bar implemented: gbWrapBar used to show wrap glyphs.
[+] Block indent/unindent feature added (Ctrl+Shift+I/Ctrl+Shift+U)
[+] CustomKeyBindings property added, and visual property editor for it. Now, it's possible to override predefined keybindings in TLMDEditView.
[+] Double-click select and then holding down the mouse button and dragging the mouse selects by "word"
[+] Triple-clicking a line selects the entire line
[+] Triple-click select and then holding down the mouse button and dragging the mouse selects by "lines"
[+] Property TLMDEditView.SelectedText added. Now you can get and set the selected text easily.
[+] Gutter bar padding properties (LeftPadding, RightPadding) added.
[+] New view settings flag to toggle highlight cursor line: vsHighlightSelectedLine
[+] LMDSedFindDialog unit: TLMDEditSearchDlgOptions: LastNumberOfReplacements and WasReplaceAllChosen fields added to get information on executed replace dialog.
[+] View.OnResize event implemented.
[+] New demos added: for custom attributes (CustomAttrsDemo) and for SyntaxEdit dialogs (CustomAttrsDemo)
[+] vsRightClickMovesCursor option added to ViewSettings.
[+] Better support for multi-document editing in one view. see this issue
[+] Better indent/unindent support. see this issue[1]
[+] New option for Gutter to show wrap glyphs on line numbers bar: gsPaintWrapsOnLineNumberBar. See Gutter.Settings property.
[+] New word wrap mode to wrap the text at the window width.
See TLMDViewWrapMode type and TLMDEditView.WrapMode property.
[+] Cursor through tabs mode, Visual Studio-like behaviour. Also, this mode will not allow set cursor beyond the line end. See vsCursorBoundToChars flag for TLMDEditView.ViewSettings property.
[+] Option for current line highlight, as new Delphi does. See vsHighlightSelectedLine flag for TLMDEditView.ViewSettings property.
[+] Now View allows to change it while Document in CompoundEdit mode. See replace issue
[+] Now its possible to search/replace in View backward with regexps too.

TLMDEditDocument

[+] Document.ReadOnly property introduced with View.ReadOnlyBgColor property
[+] Color scheme visual editor added (property editor for TLMDEditDocument.ColorSchemes)
[+] A new flag introduced for TLMDEditDocument.OnChange event: dcModifiedPropertyChanged. It is set when Document.Modified property has changed.
[+] TLMDEditDocument.Modified property added, related to its methods TLMDEditDocument.Lines.Load/Save, authomatically set when document has changed, unset when undo etc. Demos updated.
[+] TLMDEditDocument.CodePage/CodePageName properties added (support for custom save/load encodings). Also, TLMDEditDocument.Lines.SaveToStream/LoadFromStream methods supports those encoding properties. Demos are updated with support for those properties.
[+] Now Document has API to perform advanced Search/Replace (with regexps etc), as View does. See TLMDEditDocument.FindPattern***/ReplacePattern*** method sets.
[+] TLMDEditDocument API for load/save with different encodings reorganized to be more reliable. See TLMDEditDocument.CodePage**/LoadFrom**/SaveTo** methods and properties.
[+] Now the user of TLMDEditDocument able to add custom listeners to track document changes precisely. It should be useful for advanced tasks
[+] Minor improvement in TLMDEditDocument component editor: now it allows manually enter path for loading syntax schemes.

Other improvements

[+] TLMDEditGetLineAttrsEvent: An OnGetLinesAttributes event added for customization default line attributes for painting introduced. See help on TLMDEditGetLineAttrsEvent and TLMDCustomEditView.OnGetLinesAttributes, and Delphi demo: Menu "Settings" - "Custom line colorization"
[+] Custom attributes added to Parser. See documentation here.
[*] Installer: Detection of BDSCOMMONDIR improved (CRS 2007 only).
[*] Improved Helpfile for shared runtime
[*] Improved Helpfile for all LMD IDE-Tools packages
[+] WindowManager class, exposed by property inspector, designer, ect. now has StayOnTop property that allows to change form-style of non-modal property and components editors.
[+] CRS 2007.NET support
[+] New Component editor for the TPageControl control that allows to create/delete pages.
[+] Now in OnKeyDown, OnKeyUp and OnKeyPress designer's event handlers user can disable built-in key action by assigning zero to the Key parameter, just like in other Delphi controls.
[+] PrintPack integration, including Print Preview support
[+] New attributes for Syntax schemes *Scheme* element: moreWordSeparators, moreWordChars, used to alter \b operator behaviour. See Shemes manual for details.
[+] lmdrtl: LMDUnicodeEncodings.pas unit added with TLMDEncoding class (wrapper for windows/.net encoding functions/classes: System.Text.Encoding/MultiByteToWideChar/WideCharToMultiByte)
[+] Full Spellcheck support using Addict implemented (for Win32 platform only, since there's no Addict for .Net). See demo with spellchecking and TLMDEditView.SyntaxCheckTokens property.
[+] Also, regexp Replace in View and Document now allows regexp pattern substitution. See Subexpressions and substitution section in regexp manual.
[+] SQL syntax scheme added to schemes. CSS syntax scheme improved.

Code breaking changes

[+] TLMDEditView methods IndentSelection/UnindentSelection now have AUsePrevIndent parameter.
[+] If AUsePrevIndent=false, then indent/unindent methods will use IndentWidth property to add/remove spaces for selection (un)indentation.
[+] If AUsePrevIndent=true, then indent/unindent methods will use previous line with indent bigger/less than indent of selection first line to get new indent.
[*] ILMDLineMarkers.CreateMark renamed to ILMDLineMarkers.CreateMarkAtLine. Also, CreateMarkAtOffset and CreateMarkAtCol, DeleteMarksAtLine, DeleteLastMarkAtLine methods added to ILMDLineMarkers.

Archive