ScriptPack: Support of VCL/RTL features for new Delphi/C++Builder releases (now including 10.4 Sydney)
ScriptPack: New importer files (now supporting 10.4 Syndey)
Support for VCL Styles and IDE themes
New features in Version 2014
LMD DockingPack: Create your own docking styles with the new visual editor!
New integrated package: LMD DialogPack
DesignPack: Speed improvements
ScriptPack: Support of VCL/RTL features of new Delphi/C++Builder releases
ScriptPack: XE4, XE5 + XE6 importer files
New features in Version 2013
LMD IDE-Tools user are primary target for the new tabbed document zones feature of LMD DockingPack - hence LMD DockingPack is now included with each LMD IDE-Tools license!
Completely reworked IDE-Tools demo using the new fancy features of DockingPack and recent IDE-Tools enhancements.
ScriptPack: Support of VCL/RTL features of new Delphi/C++Builder releases
ScriptPack: XE3 importer files
New features in Version 2012
Code normalization for 64bit support.
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 parser 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 everything 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 re-impoting of VCL, not just a port from previous release. Thus, all new functionality (classes, methods and properties), 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:
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).
Support for default properties in imported script wrappers. Now, its possible to write Memo.Lines[i], instead of Memo.Lines.Items[i].
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.
New features in Version 2011
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 Following:
Native LMD VBScript like Basic implementation (LMD 2011.1)
**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 exception 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.
Generated wrappers have been changed to provide types of properties (e.g. var-types) to the debugger.
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. All these constructs, except nested types and class helpers, are fully supported by the generated wrappers.
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.
New features in Version 2
New TLMDSimplePropertyInspector control. The property inspector has been split from the Design Pack into separated LMD Inspector Pack. The TLMDSimplePropertyInspector represents a new designer independent 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 Delphi/C++ 6.
Updated TLMDComponentPalette control. Delphi 7 like drop-down list can be shown in cases when there are too many components on the page.
It is 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 Delphi 2005, so this event is not available in Delphi 7.
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.
ScriptPack: VCL.NET support added
SyntaxEdit: Drag and drop text support.
Bugfixes and enormous speed enhancements.
Auto-completion API added. Completion supported: based on document text, or custom completion, based on events. See TLMDEditView.CompletionSettings, OnFillCompletionList, OnCompletionReplace, OnCompletionCustomDraw, OnCompletionMeasureItem properties/events.
Simple text highlight API added: HighlightSettings, Add/Remove Highlight. Useful to highlight some errors or some search results. See TLMDEditView.HighlightSettings property, and TLMDEditView.AddHighlight, RemoveHighlight, ClearHighlight methods.
UTF8 text auto-detection improved: now detection of UTF8 without BOM is supported
Other improvements like Addict 4 support, themed border support, improved dialogs and much more.