LMD VCL 2011 - What's New?

From LMD
Jump to: navigation, search

<< Back to Getting started page



Support for IDEs and operating systems

  • Compatible with Delphi and C++ Builder XE2 (32bit only)!
  • Supported IDEs
    • Delphi 6, 7, Delphi 2005 - 2010, XE + XE22
    • 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, ERS 2010 etc.)
  • Supported operating systems
    • Win98 and WinNT4 or better (including Windows 7).

For recent Delphi releases same platforms as the IDE are supported (e.g. Delphi 2009 officially supports Win2k or better only).

Common new features

[+] LMDUnicode. Added LMDTryConvertUTF7ToUTF16 function
[+] LMDFiles. Added LMDFileExists and LMDFileAge
[+] LMDPngImage. Added MaskRect. Mask Rect by alpha from other PNG.
[+] LMDTypes. LMDDisableOleinit added, {$IFDEF LMDDISABLE_OLEINIT} removed
[+] LMDTypes. Added TLMDMargins.Create(ALeft, ATop, ARight, ABottom: Integer);
[+] TLMDGlyph. Added TextRect, GlyphRect, DrawnRect properties
[+] TLMDBaseListView. Added Theme support
[*] Various fixes and improvements

Standalone Packs

LMD DockingPack

[+] New! VS 2010 style has been implemented: antialiased rounded corners, antialiased panel header buton images, hot tab state, custom floating form border. Corresponding TLMDDockVS2010Painter class implements this style:


[+] New! Experimental feature. On the "LMD Docking" palette page "New dock-panel" item has been added. The item is not a simple component item. Dragging it over a docking site will initiate interactive (drag-dock-like) process of the new panel creation:


[+] New! "Drag panel content" mode has been added. In this mode the panel is immediatelly undocked and placed onto the floating site at the dragging start; then, the floating site form is dragged with the mouse instead of old semi-transparent blue rect. Don't worry, semi-transparent blue rect is still here, and used to highlight accepted positions :)


[+] New! Animation of hotspots and blue rect has been added. Alpha (fading) and bounds can be animated.

[*] TLMDDockPersister component has been renamed to TLMDDockManager. SiteCount and Sites[i] properties has been added to allow to iterate all existing sites (including dynamically created floating sites). OnCreateFloatingSite/OnDestroyFloatingSite events has been added to allow to configure floating sites at run-time. 

[*] Style related properties has been moved from panel/site to TLMDDockManager. Also it is now possible to choose the style at design-time. Supporting this concept, new TLMDDockManagerPainter class has been introduced. This class implements a proxy painter that uses currently selected in the docking manager style (and customized style settings). Now, this class becomes a default painter class.

[+] TLMDDockZone.ResizeKind property, accessible at run-time, has been added. In addition to default proportional resizing defined by zrkProportional value, new zrkFixed value can be used to exclude some zones from proportional resizing algorithm.

[+] TLMDDockZone.Index property has been made read-write, so its now possible to set the index to specify the order of a child zone inside its parent zone. The Indexes of child zones determine they visual order in its horz-alignment or vert-alignment parent zone, or the visual order of the corresponding tabs in tabbed parent zone.  

[+] TLMDDockZone.Width and TLMDDockZone.Height properties has been made read-write, so its now possible to programmatically setup sizes of children zones inside a horz-alignment or vert-alignment parent zone. Due to proportional zones resizing it can be still hard to set required sizes of several child zones, because assigning at each iteration the size of a child zone will correct sizes of other child zones within the same parent; so sizes, set on previous iterations will be changed. To solve this problem TLMDDockZone.SetChildrenSizes method has been added, which allows to set sizes of all children at ones.

[*] Design-time behavior has been drammatically improved: designer hints has been disabled while splitter-moving to reduce flickers; default (useless in this case) designer mouse-moving of dock-panels has been disabled to reduce flickers; dragging dock-panels in the "Structure" Delphi's tree-view has been disabled to prevent panel's Parent change.

[-] Bug #775 has been fixed. Now OnClick is fired when you click dock-panel.

[-] Parentless mode for docking panels has been implemented. Now a panel can have window handle even if it has no parent (like Delphi's frames). This should prevent "Control has no parent" VCL exception in some advanced cases, thus, simplifying the work with LMD-DockingPack.

[-] Bug #777 with unability to popup panel's HeaderMenu in a case when a single panel is docked into a floating site (thus, panel's header is not visible) has been fixed.  Now it is possible to popup the menu by right clicking on a window caption of a single-panel floating site.

[+] Docking pack has been made more consistent with VCL ActiveControl concept. Also, the issue, with several active panels (in case of floating panels) visible at a time, has been fixed. Now, a panel is painted as active, only, when its parent form is active and it contains form's ActiveControl.

LMD ThemePack

Gradient theme renderer
[+] TLMDThemesGradientThemeRenderer received OnDrawElement event, which can be used to customize drawing of any supported themed element - simply assign event via TLMDThemesGradientThemeController and do any drawing you need
[+] Theme renderer controllers added: TLMDThemesGradientThemeController, TLMDSimpleGradientThemeController, TLMDSimpleGradientExtThemeController (now you can simple put a controller on the form instead of searching and adding corresponding unit to uses clause);
[+] Explicit methods SaveColorSchemeTo(File/Stream/XML) added
[+] UseCache property added. This property allows to turn off using cache.
[+] Modified property added.
[+] Office2010-like theme added.
[+] LMDThemesControllerBase class added; several methods and properties added to TLMDThemeRenderer class; events for custom drawing of arrows/checkmarks/etc added;

Gradient theme editor

Now you can use a tool for simple and fast editing of gradient themes:


See description and tutorial movies here: http://wiki.lmd.de/index.php/LMDThemes_Editor.

Ribbon theme adapter

The new TLMDThemesRibbonAdapter component allows to customize look and feel of main parts of TRibbon control. Just put this component on the form with TRibbon control, and it will be themed with current active gradient theme. Use adapter's OnBeforeLoadSkin event and main public properties SkinBtnFill/Frame, SkinRibbonGroupFill/Frame etc. to modify ribbon control parts fillers and frames:

LMD InspectorPack

New separate standalone pack (available with LMD 2011.5 installers, already included in LMD-Tools/LMD VCL Complete)


New separate standalone pack. Provides OS specific features like TaskDialog, support of Windows 7 features etc. (available with LMD 2011.5 installers, controls are included in LMD-Tools and LMD VCL Complete already).

LMD ShellPack

[+] TLMDShellList. Added theme support for header
[+] New features based on TLMDBreadCrumbs class


Main Controls

[+] Adaption to new ThemeEngine features (Office 2007 / Office 2010 themes etc.)
[+] Several new controls with native scrollbars (TLMDScrollBoxExt, TLMDListBoxExt, TLMDComboBoxExt)

2010black.png 2007blue.png Image:2003ext_metallic.png

[+] New TLMDTagEditor control
[+] New TLMDOpenPictureDialog/TLMDSavePictureDialog
[+] TLMDFileOpenDialog and TLMDFileSaveDialog with fdoForcePreviewPaneOn options now correctly call TLMDOpenPictureDialog or TLMDSavePictureDialog instead of TLMDOpen/SaveFileDialog for Microsoft XP and lower versions.

Grid Controls


[+] 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. [-] Many drawing and layout bugs have been fixed.

LMD ElPack

[+] Adaption to new ThemeEngine features (Office 2007 / Office 2010 themes etc.)
[+] Added variables for TElDbLabel, TElDbHTMLView
[-] TElEdit. Fixed Cursor issue under Windows Vista+
[-] TElEdit. Fixed double stress sign
[+] TElComboBox. Added AutoCompletionProcessByAnyChange property
[+] TElTreeStringGrid. Added ThemeMode and ThemeGlobalMode


[+] New! Native VBScript language has been added. Fully native implementation; no external libraries or COM object are required. New language has a syntax similar to MS VbScript. It uses our shared (with PasScript) VM. Dim, Redim, Exit, Do/Loop, For/Next, Select/Case, If/Then, Set, Call classic Vb statements. Modern Vb.Net like syntax: Throw, Try/Catch/Finally, New, Typeof/Is, Return statements, initializers in Dim statement and more...

[+] PasScript compiler optimization has been added: If a jump (conditional or unconditional) byte-code instruction points to another unconditional jump instruction, this first jump instruction is retargeted to prevent jump sequences.

[+] PasScript compiler optimization has been added: JumpIfEqual/JumpIfNotEqual byte-code instructions has been added to VM. Compiler logic has been improved to use these commands instead of sequence of two (Compare + JumpIfTrue/JumpIfFalse) byte-code instructions. This improves the speed of interpreting expressions used in If/While/Until conditions as well as incomplite boolean evaluation operations "or" and "and". Following this strategy, common cases like "while true do", "until false" has been optimized. Now, compiler emits single unconditional jump byte-code instruction instead of pushing constant onto stack and performing conditional jump.

[+] All PasScriptCompiler optimizations are, of course, available for Native VBScript compiler as well.

[*] 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.

Changes/Enhancements since initial LMD VCL 2010 release


  • Delphi / C++Builder XE installer

LMD Tools

  • DB-aware version of TLMDHTMLLabel added (TLMDDBHTMLLabel)
  • ItemIndex property made published in comboboxes - descendants of TLMDCustomExtCombo (TLMDComboBoxExt, TLMDListComboBox, TLMDHeaderListComboBox)
  • Added Action support for all TLMDBaseGraphicButton descendants
  • TLMDMessageDlg added ExecuteWithDefaults method
  • TCustomFileDialog.GetFileTypeIndex method is now virtual
  • LMDMaskEdit: SuppressBlankCharOnDelete property added (BTS #750)
  • LMDClass: ForceANSI property added in TLMDApplication class (affects text drawing routines LMDDrawTextExt and LMDDrawTextCalcExt used in LMD Tools, does not affect ElPack)
  • LMDGraphUtils: Now if LMDApplication.ForceANSI is true, then DrawTextEx are used instead of DrawTextExW in LMDDrawTextExt and LMDDrawTextCalcExt (See http://wiki.lmd.de/index.php/LMD_VCL_-_LMD-Tools_FAQ#Some_notes_on_Unicode_issues)
  • LMDFormPersistent: foWriteOnClose option added (false by default). This option allows to save changed params when form is closed instead of when it is destroyed)
  • LMDCustomEdit: ImageList support for special buttons added
  • LMDBevel: ModeChanging flag added to minimize number of window recreations when Bevel's props are changed
  • LMDPageControl: GetTabAreaColor for themed mode (ttmNative) implemented
  • LMDPageControl: Text color for thememode = ttmNative now is read from theme settings
  • Added two methods for TLMDPngObject - DrawAt and CopyRect
  • New control was added - TLMDFlowPanel
  • Added OnCustomization event for non-native (pre-Vista) TaskDialog
  • Added DefaultBOM constant.
  • LMDCustomMemo: LineGap property added
  • LMDFillers, LMDFigures, LMDGradientFrames units added to lmdrtlx package
  • LMDGraph: TLMDCutType added
  • LMDBaseEdit and descendants: IME input support added, clipboard operations with unicode text support added
  • LMDCustomMemo: unicode streaming routines SaveToStreamW, LoadFromStreamW, SaveToFileW, LoadFromFileW added
  • LMDButtonBar: ttmPlatform and ttmNative modes improved
  • LMDProcs, LMDGraphUtils: fill&color utils added for extended gradient library
  • LMDFontComboBox: foHideAtPrefixedFonts option added to TLMDFontCBOption
  • LMDCustomExtSpinEdit: added SpinBtnVisible protected property
  • LMDCalculator: Precision property added
  • LMDEditAutoComplete: Selection by mouse added; mouse wheel support added
  • LMD*Const.pas: missing string resources files added, existing string res files checked for consistency with english variant
  • Public function FormatTextByMask added (the logic same as in SetUnMaskedText)
  • LMDGradient: Separator for gradients added, allowing zero-transition area
  • LMDCalendar, LMDCal: added "inactive" days - end days of previous month and start days of next days
  • LMDBevel, LMDCustomBevel: lmdbevel has non-nil owner now
  • Multiline rotated text support added in FontFX
  • LMDWindows7Utils: Missing declarations for Windows 7, Delphi 2009
  • LMDSysPrinterInfo, LMDSysConst: BTS #743 Paper bins information added
  • LMDCustomExtSpinEdit: CheckOnExitOnly property added
  • LMDCustomEdit: virtual method ShowCueBanner added
  • LMDCustomMaskEdit: AsInteger can now be used with MaskType = meMask
  • LMDTaskDialogTemplate: Ctrl+C support added
  • LMDCopyTextToClipboard global method added to LMDUtils
  • LMDBiTrackBar component added
  • LMDBiProgressBar component added

LMD ThemesPack

  • TLMDThemesGradientThemeController, TLMDSimpleGradientThemeController, and TLMDSimpleGradientExtThemeController added
  • TLMDThemesOnDraw* events added (supported by TLMDThemesGradientThemeRenderer, TLMDSimpleGradientThemeRenderer, TLMDSimpleGradientExtThemeRenderer)
  • TLMDThemeRenderer: interface enhanced
  • LMDThemes: GetDetails method added
  • Rendering of CheckBox, TrackBar, RadioButton, Progressbar minor fixes and enhancements, minor optimization
  • Text descriptor types added
  • Text color customization for teTab implemented (GetThemeColor + GetThemeFont implemented)
  • LMD NewGradientThemeRenderer demo updated (samples of changing theme in run-time added)
  • Loading themes from CAB archives added
  • Two built-in color schemes added: Metallic(Silver) and Black
  • teToolBar support added
  • Properties *Fill, *Frame, *Fillers, *Params for direct theme editing added
  • SetNewColor method added
  • NewGradientThemeRenderer demo added
  • LMDThemesGradientThemeBase and LMDThemesGradientThemeRenderer units added (support of Office2007-like and Office2010-like theme rendering for most of standard LMD controls)

LMD SysPack

  • LMDSys*: Added new sys info components for viewing system Services and Drivers

LMD RichPack

  • LMDRTFDBRichEdit: the control now can be used within Dbctrlgrid (standard TDBRichEdit does not support such usage); rendering in Dbctrlgrid's panels fixed (did not work correctly)
  • LMDRTFFontComboBox: property for hiding @-prefixed fonts added

LMD DockPack

  • Docking site drawing interface (Painter) has been published. New OnGetPainterClass event has been added to the TLMDDockSite class. This allows for advanced users to write custom painters.
  • The ability to close tabs using middle mouse button has been added.

LMD GridPack

  • TLMDGrid, TLMDDBGrid: New features implemented
  • Custom parse/format events implemented for columns: TLMDGridTextColumn, TLMDGridDateColumn, TLMDGridFloatColumn
  • Choosers for different columns implemented: TLMDDateChooser, TLMDCustomChooser, TLMDPickListChooser, TLMDLookupChooser. See Chooser property of column.
  • Custom data source introduced for "virtual mode": TLMDGridCustomSource. See Grid.CustomSource property and example in demos.
  • Custom painting for data/header cells implemented with events: Grid.OnDrawDataCell/OnDrawHeaderCell/OnDrawIndicator.

See full list here LMD 2010 - History LMD-Tools

LMD ElPack

  • ElCaption: DownImages and DisabledImages image lists added
  • Const LMDDisableOleinit added, {$IFDEF LMDDISABLE_OLEINIT} removed
  • TElGraphicButton. HotBackground now is published property
  • TElCaption. Added ImageList support for TElCaptionButtons
  • ElCaption, ElPopBtn, ElToolBar, LMDGlyphs: GlyphMaskUsage property introduced for "fine tuning" of glyphs in ElCaption, ElPopBtn, ElToolBar
  • TElPanel and successors now set enable = false for all contained controls
  • TElCurrEdit correctly accept numbers pasting from clipboard
  • TElTrayIcon now supports balloon showing
  • ElTray. Support for modern Windows versions such as Windows Vista, 7
  • ElEdits, ElInputProcessor: TElDeadChar now supports WideChar, TElEdit now has DeadCharList public
  • ElFontCombo: option for hiding @-prefixed fonts added
  • ElCombos: ForceItemHeight property added to TElComboBox
  • ElCombos: SaveUnicode property added in TElComboBox
  • TElPopupMenu: IsPopuped property added
  • ElWideDBMemo: Support of ftWideMemo field type
  • ElXTree: PlusPosition property, which allows control of vertical position of plus/minus button
  • TWinControl descendants: DoubleBuffered property made published
  • ElAdvPanel: ChangeScale method overridden for better scaling
  • ElPromptDlg: Caption, separators and button captions added to text copied to ClipBoard from ElPromptDialog
  • ElXtree: MakeColVisible method added
  • ElXTree: GetNextChecked and GetCheckedCount methods added

See full list here LMD 2010 - History LMD ElPack