LMD VCL 2012 - What`s New?

From LMD
Jump to: navigation, search

<< Back to Getting started page



Support for IDEs and operating systems

  • Compatible with Delphi XE2 and C++ Builder XE2, including 64bit support for Delphi XE2!
  • Supported IDEs
    • Delphi 6, 7, Delphi 2005 - 2010, XE + XE2
    • C++ Builder 6, 2006 - 2010, XE + XE2
    • Delphi 2005.NET - Delphi 2007.NET
    • Turbo (2006) Professional versions for Delphi, C++ and Delphi.NET
    • All corresponding Studio Products (BDS 2006, CRS 2007, CRS 2009, RAD Studio 2010, XE, XE2 etc.)
  • Supported operating systems
    • Win98 and WinNT4 or better (including Windows 7).

For recent Delphi releases LMD VCL package support same platforms as the VCL which is included in the IDE (e.g. Delphi 2009 officially supports Win2k or better only).

64bit support (Delphi XE2 and higher)

All packages were ported to 64bit. Exception: Compatibility controls (dcllmdlegacy) can not be used in 64bit applications.

New package naming convention

Package names have been changed to be more consistent with VCL naming convention. LMD version number and IDE version number were removed from package names. Runtime package names are prefixed now with "lmdrt", design-time package names with "dcllmd". Some examples of generated package file names are: lmdrtdocking.dcp, lmdrtdocking.bpi, lmdrtdocking.lib, dcllmddocking.dcp, dcllmddocking.bpi, dcllmddocking.lib. IDE version suffix is still contained only in generated "bpl": lmdrtdocking_160.bpl.

This change simplifies porting projects (supposed they are compiled with run-time packages) to another IDE version. Since package references contain neither IDE version nor LMD platform version, migrating to a future IDE version will require no changes.

AnyLogger Source Code

Until now the LMD AnyLogger Console was a free logging client for LogTools library and registered LMD users (if you did not use it yet: Visit your personal download area and get this handy tool. A small Tutorial is available on public wiki). The executable remains free, but on user request we made the full sourcecode of the application available for purchase (see [blog entry]).
New LMD 2012 Subscription SVN user can request free source license for internal use (without support) after first official release from sales@lmd.de.

LMD Tools


  • Code normalisation for 64bit support.


Three values added to TLMDEditOption type: eoAllowCopy, eoAllowCut, eoAllowPaste. All LMDBaseEdit descendants which expose 'Options' property now support setting separate permissions for each of Copy/Cut/Paste action.


Actions in popup menu are shown/hidden according to current options. For example, all copy/cut/paste operations are disabled:



LMD HTML Controls

New HTML controls:

  • TLMDHTMLComboBox
  • TLMDHTMLExtListBox
  • TLMDHTMLHeaderControl
  • TLMDHTMLListBoxExt




New component TLMDFormComboBox added. This control is a generic combobox, allowing to dropdown a form containing any visual control:




New component TLMDDateTimePicker added. LMDCalendar and LMDClock controls received Style and ColorScheme properties. See screenshots of LMDDateTimePicker with different calendar and clock styles:






LMDMaskEdit received new mask type: meDateTime and new property TimeSettings.


The mask type allows to edit both date and time part of a DateTime value. For 'meTime' mask type a convenient edit mode is now supported, similar to that for meDate mask type.


Custom time formats support added. For custom formats time separator must be ':'

Custom formats can use

  • 'h' for hours in 12 hour format,
  • 'H' for for hours 24 hour format,
  • 'm' or M for minutes,
  • 's' or S for seconds,
  • 't' for AM/PM sign if 't' is omitted, then AM/PM sign is added at the end with a space.

'hh' ('mm', 'ss') means that leading zero is displayed, 'h' ('m', 's') means that leading zero is NOT displayed.


  • 'h:mm:ss' - 3:34:12 am
  • 'hh:mm' - 03:34 am
  • 'hh:mmt' - 03:34am
  • 't h:mm' - am 3:34
  • 'HH:mm:ss' - 03:34:12


LMDToolBar control

New LMDToolBar control added. The toolbar supports png glyphs, separators with customizable background, different button widths.

Example 1. Gradient-backgrounded toolbar with one of buttons wider than others:


Example 2. Gradient-backgrounded toolbar with transparent buttons:


Toolbar editor has some preloaded icons (famfamfam + glyfx 16x16). Also, any png icon pack can be loaded, the editor will remember the path ("Load custom pack 1..." and "Load custom pack 2..." buttons navigate to folders selected before). The "Load GlyFX..." button navigates to "C:\Program Files\Common Files\Borland Shared\Images\GlyFX\Icons\PNG\" folder).


GlyFX 32x32 icons loaded:



Support of Vcl.Styles added for most LMD and ElPack controls

Vclsstyles aqualightslate.PNG

Vclsstyles emeraldlightslate.PNG

Vclsstyles goldengraphite.PNG


Deprecated Controls


This component uses features of BDE which is deprecated. Therefore control was moved to Legacy Package. If you used this control, please make sure to install dcllmdlegacy package (not installed by default from installer!).


This component uses features of BDE which is deprecated. Therefore control was moved to Legacy Package. If you used this control, please make sure to install dcllmdlegacy package (not installed by default from installer!).


This component uses features of BDE which is deprecated. Therefore control was moved to Legacy Package. If you used this control, please make sure to install dcllmdlegacy package (not installed by default from installer!). [Top]

LMD DockingPack

  • StayFloatFormsOnTop boolean property has been added to TLMDDockManager component. Default value of this property is True, which means that all floating site forms will has StayOnTop flag set.
  • Z-order handling of floating forms as well as of other things like hotsports or blue rect has been improved.
  • The bug with internal timer WndProc has been fixed. Now timer WndProc does not ignore other messages, specifically WM_QUERYENDSESSION message.
  • Small improvements of the painting code has been made.
  • #822 bug has been fixed.


LMD ElPack


  • Code normalisation for 64bit support.




  • Code normalisation for 64bit support.


  • Items sorting in TLMDObjectComboBox drop-down list has been implemented.

Sorted drop-down list

  • The bug with TLMDDebugModule.Assign has been fixed. Now its possible to use TLMDDebugger in a frame.


  • Native languages (PasScript and NativeVB) VM and compilers has been adapted to x64 platform. This includes optimized Variant operations, used by VM.
  • The parser of the LMD-ScriptPack Importer Wizard pasrser has been improved; for example, it is able currently to parse Delphi generic (templates) as well as other new Delphi language constructs. So, the whole VCL can be parsed without parse errors.
  • LMD-ScriptPack Batch Importer is able currently to process specified units in the "uses" recursion order, making the use of the batch importer much easier. As well, some importing units can be marked as "supplemental"; in this case the importer will automatically uncheck everuthing inside the unit that is not used by other (non-supplemental) imported units. This is a great help while importing units such as WinAPI units: Windows.pas, AtiveX.pas, ect.
  • Based on new Batch Importer functionality, the VCL has been fully reimported. So, LMD-2012 release contains true reimpoting of VCL, not just a port from previous release. Thus, all new functionality (classes, methods and properies), which is compatible with script-pack should be accessible from the script.
  • For Delphi 2010 and up embedded view is used for Importer Wizard as well as for Batch Import form. Importer Wizard is now appears as a lower tab in Delphi source editor, Batch Import form - as a top source editor tab:

Importer Wizard Batch Import

  • Importer Wizard as well as Batch Import form now uses standard Delphi message view to report messages. Just like any other messages, generated messages are clickable:

Import Messages

  • Import Wizard as well as Batch Import are now able to generate "additional info" messages. These messages can be usefull while importing; for example, importer will count all untypes contants, making it impossible to forget to assign constant type manually:

Import Additional Info

  • Script importer performance has been improved.
  • Support for optional parameters in imported script wrappers. XE2 introduces many additional optional parameters in VCL functions (one example - DirectroyExists function).
if DirectroyExists('c:\MyDir') then // FollowLink second parameter is omit.
  • Support for default properties in imported script wrappers. Now, its possible to write Memo.Lines[i], instead of Memo.Lines.Items[i].
  M, L;
  M := MyForm.Memo1;
  L := M.Lines;
  for i := 0 to M.Lines.Count - 1 do
    M.Lines[i] := 'Hello world'; // Both ways should work.
    L[i]       := 'Hello world'; //
  • Partial support for overloaded procedures/methods in imported script wrappers. Wrappers code now support overload resolution by parameter count; however, overload resolution by parameter types are not supported.
  S, F;
  S := '7.5';
  F := StrToFloat(S);                  // Both calls should work.
  F := StrToFloat(S, FormtalSettings); //
  • The bug with invalid EOl in NativeVB EvalExpr and ExecStmt has been fixed.


  • The bug with font in SyntaxEdit dialogs has been fixed. Now dialogs use standard Windows font, just like all other VCl dialogs.


Changes/Enhancements since initial LMD VCL 2011 release


  • Delphi / C++Builder XE2 installer (32bit only for LMD 2011 platform)

See full list here LMD 2011 - History [Top]

LMD Tools

  • LMDCal: TLMDCalendar reworked (added ImageList support, added support of custom captions for buttons, standard glyphs for navigation buttons added)
  • LMDDropdownForm unit added
  • LMDCalendarComboBox: Style and ColorScheme props added
  • LMDClock: Style and ColorScheme properties added; built-in Vista and Windows7 look added
  • LMDCalendar: Style and ColorScheme properties added; built-in WinXP and Vista styles added with color schemes
  • LMDDateTimePicker and LMDCustomDateTimePicker units added
  • TLMDColorScheme type moved from LMDThemesCommonType unit to LMDClass unit
  • LMDEditDBLookup, LMDDBEditDBLookup: FindNearest replaced by Locate; reference to bde.dbtables removed
  • LMDBaseEdit: eoAllowCut, eoAllowCopy, eoAllowPaste options added
  • LMDTypes.pas Added combine type for Int64Rec and LongRec - TLMDIntRec
  • LMDSysIn. Added LMDSIDPIAwareIconSize, LMDSIDPIAwareSmallIconSize, LMDSILogPixelsX functions
  • TLMDTaskDialog. Better Support of higher DPI-Resolutions
  • LMDSysIn: Added LMDSIDPIAwareIconSize, LMDSIDPIAwareSmallIconSize, LMDSILogPixelsX functions
  • LMDHTMLUnit: color parameter added to <A> tag
  • LMDCSVImport: ansi text import fixed
  • LMDCustomMemo: GetRowText method added (returns the line with given index with respect to word-wrap line breaking)
  • TLMDTaskDialog. Added ability to select default button for common buttons too
  • LMDHTMLUnit: OnAdjustControlPosition event added, some additions to TLMDHTMLData class made
  • LMDPageControl: OnDblClick event added
  • LMDSwitch: TLMDWSwitch.TabOrder property is now published
  • Added enumerations support in TLMDWideStrings descendants
  • TLMDSearchFileGrep. Added new property - Paused which allow to pause searching process
  • TLMDSearchFileGrep. Removing duplicate files from search result
  • TDocumentStringsProxy now inherited from TLMDMemoryStrings instead of TLMDStrings
  • LMDBaseEdit: eoUserLocale option added (affects WMChar handling when CharCase = ecUpperCase and ecLowerCase)
  • LMDDBHTMLLabel: LMDDBHTMLLabel.pas unit added (implements TLMDDBHTMLLabel)
  • LMDCustomBevelPanel: Creation of FBevel moved to virtual CreateBevel method
  • LMDCustomSpeedButton: ButtonStyle is now automatically ubsWin40Ext for ThemeMode = ttmNative
  • Options property added were relevant in LMDCustomEdit descendants (user request);


LMD ThemePack

  • TLMDThemesRibbonAdapter component added (see description and screenshots in What's new section)
  • TLMDThemesGradientThemeRenderer: SuppressUpdate property added
  • LMDThemesGradientThemeRenderer: OnDrawElement event added
  • Demo of using OnDrawElement event added
  • LMDThemesControllerBase class added; several methods and properties added to TLMDThemeRenderer class;
  • Events for custom drawing of arrows/checkmarks/etc added;
  • Controllers for gradient theme renderers added (TLMDThemesGradientThemeController, TLMDSimpleGradientThemeController, TLMDSimpleGradientExtThemeController);


LMD StoragePack

  • LMDStorPropertiesStorage: ComplexPropDelimiter property added ('/' by default for compatibility)


LMD ElPack

  • ElTreeCombo: enhanced multi-monitor support
  • TElXTree inplace editors - now editing result validated by validators
  • TElCalendarForm now inherits from LMDDropdownForm
  • TEl(X)Tree. Improved validating in inplace editors
  • ElXTreeCell: HTMLControlsVisible property added
  • ElTree*Edit: property Font: TFont now available in TElTreeInplaceEditor
  • TElCalendar. Now when click user clicks on other month days calendar will navigate to this month and selected day
  • TElXTree. SelectAll method now has optional parameter ASelectWithCells to control selection with cells
  • ElXTree: GetHTMLControlByName method added, OnAdjustControlPosition event added
  • ElMenus: SelectedItemFont property added
  • TEl(X)Tree. Added OnEditKeyDown event
  • ElHTMLView: LoadFromFile method added
  • ElShellCombo: VK_UP/VK_DOWN/VK_DOWN+Alt support added; Style prop published; csDropDownList look fixed
  • ElMenus: UseFontColor property added for TElMainMenu, TElPopupMenu
  • TElComboBox. Added ForcedTextClear property to clear text when setting ItemIndex to -1 for csSimple and csDropDown styles
  • TElComboBox. Added AutoCompletionProcessByAnyChange property
  • TElTreeStringGrid. Added ThemeMode and ThemeGlobalMode



  • Added Object assigning to TLMDEditDocument.Lines
  • LMD SyntaxEdit: Font and ViewFont (ParentFont like) properties has been added to edit's print task. So, it is possible currently to print edit's content using different font without creating additional (temporary) view.
  • Native VBScript language support has been added to LMD ScriptPack. Fully native implementation; no external libraries or COM object are required. New language has a syntax similar to MS VBScript.
  • LMD-ScriptPack: Many minor issues has been fixed and several features have been enhanced in our native VM. Native scripts should now be faster and more stable.


LMD ShellPack

  • Added LMDChangeWindowMessageFilterEx to LMDShUtils
  • TLMDShellTree. Added new method ClearCheckboxes
  • LMDShList: SuppressFolderNavigation property added, loUseSuppressFolderNavigation option added


LMD GridPack

  • New SortingAllowed property has been adde to TLMDGridColumn class. This property can be used to prevent the possibility to sort a column data by clicking on column's header.
  • New Rating column type has been added. Among showing values, the column allows to edit them, by mouse-clicking on a grid-cell or by pressing '0'...'9' keys.
  • New Image column type has been added. It allows to show images from associated image list, based on the cell value.
  • New Progress column type has been added. Like Rating column it allows to edit progress values by mouse-clicking on a grid-cell.
  • Column.Color and Column.DefaultColor properties, which allows to draw every column in each own color.
  • New Column.AllowUndefinedValue; in addition handling of Null values has been implemented in ALL column editors. Seting Null value is even possible in Rating, Progress and Image columns pressing 'Del' key.
  • DrawGrayed property was added to CheckBox column type; Assigning False value to the property will allow to draw grayed state as an empty (white) cell.
  • Drawing speed and appearance was improved. Enhanced layout include the style of drop-downs controls like calendar, calculator, ect.