LMD DockingPack: Create your own docking styles with the new visual editor!
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.
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.
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.
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.
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 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.
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.
Other improvements like Addict 4 support, themed border support, improved dialogs and much more.