Difference between revisions of "LMD VCL 2010 - What's New?"
Line 89: | Line 89: | ||
== LMD IDE-Tools == | == LMD IDE-Tools == | ||
− | * Native Pascal | + | * '''New PascalScript Language support added.''' Unlike the previously MS ActiveScripting based languages this is a 100% native VCL implementation without need of external dlls. The PascalScript engine includes an optimizing byte code compiler and very fast interpreter.<br> The PascalScript language is a dynamic Variant based script language that supports most of the Delphi Pascal expressions and statements like |
+ | ** procedure/function declarations | ||
+ | ** const/var/out parameters | ||
+ | ** global/local variables and constants. | ||
+ | ** Extended support of exception handling, e.g. raise, try-except and try-finally statements; real Delphi exceptions are raised internally that allow to test an exception class in handler, e.g. on E: EZeroDivide do. | ||
+ | ** The PascalScript CodeObject engine implements a secret interface (in addition to IDispatch) that allows very fast interoperations between connected script controls. Besides that execption processing can be made transparent between connected script controls. | ||
+ | ** Native script operators such as 'is', 'in', '@' and set constructors, e.g. [akLeft,akTop] allow to work with imported Delphi objects, instead of provided to ActiveX scripts special functions (e.g. SetMake, SetEmpty, ClassIs, EventMake, ect.). Like for the ActiveScripting based languages import units of your Pascal units can be created. Import units for the VCL are shipped with each copy of ScriptPack.<br> | ||
* Pascal script debugger: Native debugging of the PascalScript, including single-threading debugging. The single threading debugging allows to handle OnBreak event in the same thread; using Application.ProcessMessages inside the OnBreak event handler allows to organize single threading debugging of the event based (e.g. designed) UI applications. | * Pascal script debugger: Native debugging of the PascalScript, including single-threading debugging. The single threading debugging allows to handle OnBreak event in the same thread; using Application.ProcessMessages inside the OnBreak event handler allows to organize single threading debugging of the event based (e.g. designed) UI applications. | ||
* New AddOrSetValue and TryReadValue script control methods to add/modify/read the external variables of simple types, e.g. numeric, strings. E.g. to prevent creating and importing model in simple cases. | * New AddOrSetValue and TryReadValue script control methods to add/modify/read the external variables of simple types, e.g. numeric, strings. E.g. to prevent creating and importing model in simple cases. | ||
Line 124: | Line 130: | ||
* LMDSpinButton: CM_ENABLEDCHANGED method enhanced to support disabling one button. | * LMDSpinButton: CM_ENABLEDCHANGED method enhanced to support disabling one button. | ||
− | == LMD Standalone Packs === | + | === LMD Standalone Packs === |
− | * RichPack | + | * LMD RichPack |
** Themed border added to TLMDCustomRichEdit | ** Themed border added to TLMDCustomRichEdit | ||
− | |||
* LMD SysPack | * LMD SysPack | ||
** LMDSysNetworkObject unit, TLMDTCPIP: Added CSIPAddress, CSIPSubnetMask, CSDefaultGateWay properties, containing comma | ** LMDSysNetworkObject unit, TLMDTCPIP: Added CSIPAddress, CSIPSubnetMask, CSDefaultGateWay properties, containing comma |
Revision as of 23:37, 27 August 2009
<< Back to Getting started page
Contents
General
Support for IDEs and operating systems
- Compatible with Delphi 2010 and C++ Builder 2010!
- Supported IDEs
- Delphi 6, 7, Delphi 2005 - 2010
- C++ Builder 6, 2006 - 2010
- 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
- Improved shared Unicode support, including additional rework for native Unicode in Delphi 2009 and higher.
- Many minor improvements in the shared packages based on customer requests, examples are:
- BTS# 733, adapting behaviour of TLMDWideStringList.IndexOf functionality
- LMDStrings: LMDCheckWildCardMask method added.
- LMDGraphUtils: LMDExtTextOut method added.
New Packages
- LMD DockingPack - Add docking features with floating panels and hot zones as known e.g. from Visual studio! This package is included by default in LMD-Tools and LMD ElPack.
Standalone Packs with major updates
- LMD ScriptPack - in connection with IDE-Tools: Heavily improved Debugger Support for both ActiveScripting Engine based languages and the native PascalScript variant.
- LMD ThemePack
- Improved support for built-in themes (runtime customization) including saving/restoring theme data to/from XML files.
- DrawThemeEdge and GetThemeColor methods implemented.
- Batch edit methods added (ReplaceColor, SetNewColor, ChangeBrightness).
- LMD Office2003ThemeRenderer demo improved and can be now used for generating custom color schemes:
LMD-Tools
- Windows 7 support.
- Correct PNG support e.g. in FillObject propertes (as available in ElPack)
- Improved rendering of the integrated internal HTML engine
Main Controls
- New Control: TLMDBiProgressBar. Support 2 progress indicators in one control and additional marquee and infinite modes.
- New Control: TLMDBiTrackBar. Allow 2 thumb controls to specify two values or ranges.
- New Control: TLMDGrid with advanced features like
- Full support of LMD ThemePack
- Customizable inplace editors
- Insert/delete/move colums at runtime
- Column sorting and much more
A lot of work is in progress here, the R2 release will add many more predefined place editors along with the DBGrid variant.
- TLMDCustomEdit (and descendants):
- CueBanner property added. This property has effect for those descendants of TLMDCustomEdit that can contain empty text. Unlike the Delphi implementation (available from Delphi 2009 on) this feature works on any supported OS.
- TLMDMaskEdit
- Value getters are now setters, too. The existing functions AsInteger, AsCardinal, AsInt64, AsFloat, AsDate, AsTime, AsCurrency, AsString have been transformed to read/write properties.
- TLMDStyleManager
- Improved designtime editor (e.g. property filters with wildcard support)
- ListBox Controls: Default items can now be set at designtime
LMD BarPack
TLMDExplorerBar
MouseDown and MouseUp within sections now are translated to ExplorerBar events.
LMD ShellPack
LMDShController [+] LMDShellInvokeContextMenu: aSuppressCmd param added (false by default to keep compatibility) [+] Overloaded version of LMDShellInvokeContextMenu for given full file/directory name added.
LMDShList [+] LMDShList: selection by first character on key press added
LMD StoragePack
[+] LMDStorBase: IsLoading read-only property added; [+] LMDStorINIVault, LMDStorXMLVault: OnUpdateBeforeClose event added.
LMD ElPack
- DockingPack included
- TElBtnEdit
- PngGlyph support to ElButtonEdit
- TElHTMLLabel, TElTree, TElXTree: TLMDHTMLImageNeededEvent support added
- TElHTMLLabel: Vertical Spacing added (LineGap property)
- TElListBox
- Advanced/Extended OnChange/OnClick events (which can be used as item selection notifier)
- TElStyleManager
- Improved designtime editor (e.g. property filters with wildcard support)
- Apply Button which allows to review changes before closing the dialog
- TElExpressionEval: Improved error handling
- TElXTree
- GetNextChecked and GetCheckedCount methods added. These methods are based on LookForItemEx2 method and can be used with such flags as IterateBackward, CheckStartItem, SubItemsOnly, VisibleOnly, CountCollapsed.
- Drag&Drop header with scrolling
LMD IDE-Tools
- New PascalScript Language support added. Unlike the previously MS ActiveScripting based languages this is a 100% native VCL implementation without need of external dlls. The PascalScript engine includes an optimizing byte code compiler and very fast interpreter.
The PascalScript language is a dynamic Variant based script language that supports most of the Delphi Pascal expressions and statements like- procedure/function declarations
- const/var/out parameters
- global/local variables and constants.
- Extended support of exception handling, e.g. raise, try-except and try-finally statements; real Delphi exceptions are raised internally that allow to test an exception class in handler, e.g. on E: EZeroDivide do.
- The PascalScript CodeObject engine implements a secret interface (in addition to IDispatch) that allows very fast interoperations between connected script controls. Besides that execption processing can be made transparent between connected script controls.
- Native script operators such as 'is', 'in', '@' and set constructors, e.g. [akLeft,akTop] allow to work with imported Delphi objects, instead of provided to ActiveX scripts special functions (e.g. SetMake, SetEmpty, ClassIs, EventMake, ect.). Like for the ActiveScripting based languages import units of your Pascal units can be created. Import units for the VCL are shipped with each copy of ScriptPack.
- Pascal script debugger: Native debugging of the PascalScript, including single-threading debugging. The single threading debugging allows to handle OnBreak event in the same thread; using Application.ProcessMessages inside the OnBreak event handler allows to organize single threading debugging of the event based (e.g. designed) UI applications.
- New AddOrSetValue and TryReadValue script control methods to add/modify/read the external variables of simple types, e.g. numeric, strings. E.g. to prevent creating and importing model in simple cases.
- New ReadVar/WriteVar script controls methods provide access to the script-code global variables.
- New DebugName script control property to represent the script control to the end user in the IDE-Tools debug-related UI controls, such as call-stack or breakpoint-list.
- Superior enhancement of the debugger breakpoints: Delphi like breakpoints actions - LogMessage/LogStackFrames/EvalExpression/EnableGroup/DisableGroup; Delphi like breakpoint properties - Enabled/Condition/PassCount/Group. These advanced concepts has been emulated for the ActiveX based scripting languages, and supported natively by the PascalScript debugger.
- The debug variables tree, e.g. TLMDVariables is now lazy initialized to prevent dead loop while working with complex circular referenced objects. This also allows optimizing resources when showing complex objects graphs or long arrays.
- Generated wrappers have been changed to provide types of properties (e.g. var-types) to the debugger.
- The bug with representing nil objects as a variant Null has been fixed. Now nil objects are represented in wrappers as a nil IDispatch, e.g. with varDispatch variant type.
- The importer parser has been enhanced: new incremental preprocessor are now able to interpret some of the $IF directives; the parser itself are now able to parse most of the new Delphi language constructs, like nested types/consts/vars, class properties, methods and properties in records, class helpers, ect. However, currently, most of the new constructs are only parsed, but not supported by the wrappers generator.
- New debugger related visual controls: TLMDCallStackView, TLMDCallStackComboBox, TLMDVariablesView, TLMDWatchView, TLMDEventLogView, TLMDBreakpointsView. All these controls are connectable to the debugger through easy to use TLMDDebuggerSource component.
- The bug with improper showing of non-visual components when ShowNonvisualComponents are set to False has been fixed.
Changes/Enhancements since initial LMD VCL 2009 release
LMD-Tools
- 2 new controls: TLMDWSwitch and TLMDDBWSwitch which handle focus and space-checking behaviour
- LMDButton: Unicode hint added
- LMDCalendarEdit: ForceTodayAsDefault property added
- LMDCaptionPanel: ThemeMode, ThemeGlobalMode properties added, themed drawing added.
- LMDCaptionPanelGroup: AutoExpand property added; when set to true, it causes corresponfing events (OnExpanding, OnExpanded etc.) to be triggered if changing orientation makes impossible to keep panel collapsed
- LMDColorEdit: "Custom color..." item added for executing custom color dialog; SelectedColor is restored now correctly after custom color
- LMDCustomExtSpinEdit: OnValueChanging, OnValueChanged events added; AutoDisableButtons property added.
- LMDCustomMemo: IgnoreLastEmptyLine compatibility property added
- LMDFormDisplay
- Merging main menu functionality added
- AutoFocus property added
- LMDMaskEdit: ProcessBlankChar property introduced
- LMDPageControl: TabAlignment property added
- LMDPNGImageList support added for LMDMMButton
- LMDProcs unit: LMDIsHTMLText helper function added;
- LMDSpinButton: CM_ENABLEDCHANGED method enhanced to support disabling one button.
LMD Standalone Packs
- LMD RichPack
- Themed border added to TLMDCustomRichEdit
- LMD SysPack
- LMDSysNetworkObject unit, TLMDTCPIP: Added CSIPAddress, CSIPSubnetMask, CSDefaultGateWay properties, containing comma
LMD ElPack
- ElAdvancedPanel. New OnCheckBoxClick event
- ElBtnEdit: ButtonPngGlyph and AltButtonPngGlyph added
- ElComboBox.
- Placing drop down differently (RightAlignView - Drop down button position)
- ElComboBox: OnBeforeSelectValue event added. Raised before Drop down list CloseUp.
- ElComboBox: OnCanSelect event added
- ElDBComboBox(style=csdropdownlist) update the dataset immediately when the user selects a different item in the drop-down
- ElDTPick: New property CalendarLiveClock
- ElExplorerBarGroup: OnCheckBoxClick event added. TNotifyEvent - fired when user clicks CheckBox.
- ElHTMLLabel. New property ShowAccelChar
- ElMenuBar: MDI support for TElMenuBar added
- ElMenuItem - Added OnSubMenuPopup event
- ElMenus: TElPopupMenu.EndMenu method to cancel programmatically added
- ElSpinEdit: New events OnCheckRangeError: TLMDCheckIntRangeEvent, OnCheckRangeError: TLMDCheckFloatRangeEvent
- ElToolBar
- MoreMenuDrawStyle: TDrawStyle property added to define the style of MoreMenu.
- MoreMenu collects menu items from ToolButton in case it has an assigned PullDownMenu.