New features in ModelMaker 8.00
Delphi 2005 (Delphi 9) support
- Delphi IDE integration
- Most Delphi 2005 for Win32 and .NET syntax is supported.
- Delphi 2005 syntax highlighting scheme available
- The Delphi 2005 inline procedure / method directive is supported. Enabled in parser and generator when Delphi.NET syntax is enabled. Method and Procedure dialogs adjusted.
Refactoring
- The Convert to const refactoring (unit code and method implementation views) can be used to convert numbers and string to a constant. This refactoring can now also be used in the unit interface section. In this case the const will be added before the first type or procedure declaration immediatly following the interface or interface uses clause. The shortcut for this command has been changed to Ctrl+Alt+N to avoid conflicts with Shift+Ctrl+N (uncomment). For consistency the shortcut for convert to resourcestring has been changed to Ctrl+Alt+R.
- The Surround Templates can use the macro <!clipboard!> to insert the contents of the clipboard on applying a template.
- Surround with Template Improved: (previously known as Embrace With Template)
Surround with Template supports unindenting the two templates rather than the existing code. This is usefull for adding begin end pairs around existing statements. For example:if Condition then
DoSomething; // place cursor on this line
Applying a begin / end template with option unindent snippets enabled, results in:
if Condition then
begin
DoSomething;
end;
Note that begin and end have one indention level less than the existing code. - The Rename Parameter refactoring now reflects the new param name in descendant methods code. Only applicable for descendant methods that have enabled the option inheritance restricted.
General GUI
- Position and size for floating views are saved between sessions. Default size for floating Views improved.
- Toggle Full Screen now also works if layouts are Frozen (Environment Options|Layouts)
- Documentation view editor and Macros editor allow inserting predefined macros through pop up menu.
Source Import
- Records containing compiler directives are not imported into the model but left as unit code (similar to variant records). This avoids corrupting the record on re-generation. If the importer skips a record a warning will be emitted.
Source Generation
- A new option "Use Interface Order" on the Project Options|Source Code Generation tab (Class Implementation Generation group) allows using the interface order for the method implementation order. This is useful when an interface custom order is defined and the implementation should be generated in the same order.
- New Generation Order Grouping mode "inline" methods first allows positioning methods with the inline directive before all other methods in this class. To (manually) refine the order of inlined methods, an implementation custom order should be used.
Diagrams
- Diagrams have an option "Custom Marked", when set the diagram is displayed with a bold font in the diagram explorer. Can be used to visually mark a diagram (for example: completed, needs some work etc.)
- Association Role names may be suppressed on project, diagram or association level using visual style options.
- Print contained Diagrams in Diagram Explorer allows printing all diagram in a folder.
- Print Diagram preselects the selected diagrams.
- Environment Option "Pack unused class associations" on the General tab. Allows disabling auto removing unused shared class associations when saving a project. Defaults to True.
IDE Integration
- Keyboard shortcuts for Integration expert can be adjusted using the keybindings tab on the "Integration Options..." dialog.
MMToolsAPI
- IMMV10Diagram allows accessing the Diagram.CustomMarked property. Cast an IMMDiagram as IMMV10Diagram.
- IMMV10ProjectManager introduces MarkProjectModified. Cast MMToolServices>ProjectManager as IMMV10ProjectManager to force the project modified, for example after modifying tagged values or 3rd party data.
Instant Objects Integration / Object Foundry
- ModelMaker 8 requires the IO metadata comment to start with "{IOMETADATA " (case sensitive and omit quotes) instead of just "{". Steven Mitchell updated the Instant Objects plug-in expert that generates / expects this special tag. Instant Objects users should install the latest version of this now open source expert.
Solved problems
- Importing records or classes containing an anynomous procedural type with a calling convention caused import errors. Solved.
- Customized Type Presets were not persistent. Solved.
- Locating a method in Delphi containing very long parameter lists wuld cause errors like "$n is not a valid integer". Solved.
- Documentation wrapping for comment styles other than // would wrap too early, typically at least 4 less than the wrap width. Solved


Code generation basics