TMS Diagram Studio

Add diagram and flowchart capabilities to your application.

Also available for:

Version History



  • Fixed : Diagram objects painted horizontally mirrored when graphic lib was set to GDI+.
  • Fixed : Diagram objects painted horizontally mirrored when graphic lib was set to GDI+.


  • Fixed : Font being draw with wrong size, after loading a diagram from file/stream in High DPI.


  • New : Delphi 11 / RAD Studio 11 support.
  • Fixed : Error when exporting too big diagrams to WMF format.


  • New : TatDiagram.ExportAsPng method to export diagram as PNG image.
  • Improved : Better block snap grid placement when inserting a new block.
  • Fixed : TPolyDiagramLine not working correclty with linkpoints flagged as SourceOnly/TargetOnly.
  • Fixed : Access Violation when using a printer with more than 256 paper sizes.


  • Improved : High DPI improvements: TDiagramToolbar has correct height and button sizes. Ruler has now correct division lines.


  • New : Support for RAD Studio 10.4 Sydney.
  • Improved : Better display of alternate line dashes in Direct2D rendering.
  • Fixed : Sporadic Access Violation in TUMLBlock.


  • Fixed : Some blocks not appearing when exporting to bitmap in some situations.
  • Fixed : Node collapsing not correctly working for grouped blocks.


  • Fixed : TatDiagram.MoveBlocks method behaving wrongly when moving group blocks and parameter AOnlySelected is false.


  • New : Experimental (beta) support for High DPI monitors. For now only the TatDiagram component itself is supposed to the HDPI compatible. The full editor (provided by TDiagramEditor component) is not yet HDPI compatible.
  • Fixed : Access Violation when clearing a diagram containing grouped blocks. The "clearing" operation happens actually in several situations, like undo, adding block to library, closing a diagram, etc.. The error didn't happen in every diagram with grouped blocks, usually only when groups had many diagram lines connected to each others.


  • Improved : TDiagramEditor.DialogMode allows displaying the diagram editor window as non-modal.
  • Fixed : Memory leak when opening the diagram editor with existing custom blocks in user library.


  • New : TPictureMore.pmStretchProportional stretches the picture to the whole block size but still keeps original image ratio.
  • New : Support for Delphi/C++Builder 10.3 Rio.
  • New : PasteOffsetX and PasteOffsetY properties controls where a new pasted diagram object will be positioned compared to the original copied one.
  • Improved : PageLines now follows FixedPageWidth, FixedPageHeight, FixedPageCols and FixedPageRows, if they are defined.
  • Fixed : UML Blocks showing wrong margins around title section depending on font size.
  • Fixed : Sporadic Access Violation when destroying diagram with layers.


  • New : TExportSize esPage allows exporting the diagram to a bitmap in the full size - the whole diagram will be exported with its exact size. Mostly used with FixedPage* properties.
  • New : TArrowShape.ShowGuide property allows showing "guides" (extension/dimension lines) at the end of lines.
  • New : Properties FixedPageWidth, FixedPageHeight, FixedPageCols and FixedPageRows allows setting a fixed size for the diagram, in pixels.
  • New : CenterTextCellOffset property allows controlling the center text cell position relative to the line center.
  • Fixed : Clipboard issues in Windows 10.


  • Fixed : Fixed: Showing a modal form during OnDblClick would cause diagram to enter select mode even with mouse button unpressed.
  • Fixed : Fixed: Round rectangles (shaped based on bsSquareShape) not showing correctly in diagram navigator.
  • Fixed : Fixed: LiveDiagram was not restoring visual settings of EndBlock after an execution


  • Improved : Changed order of handle detection - handles at the end of Handles collection will have higher priority on handle selection.
  • Fixed : Wrong preview/print for landscape more (regression).
  • Fixed : TDiagramButtons control displaying all categories regardless of the value of DiagramCategories property.


  • New : RAD Studio 10.2 Tokyo Support


  • Fixed : RoundRect blocks displaying differently when using GDI or GDIPlus/Direct2D
  • Fixed : Exporting to bitmap not including diagram background image when using Direct2D


  • Fixed : Anchored links not being moved together with blocks


  • New : TCustomDiagramBlock.CornerRadius property for fine-tuning of rounded corner when using rounded-square shape
  • Improved : Improved performance when clearing or deleting many diagram objects at once
  • Fixed : Preview bitmap for landscape orientation
  • Fixed : Moving groups that have lines anchored would cause misplacement of group members
  • Fixed : Diagram toolbar with wrong height at design-time


  • Fixed : C++ Builder 2007 headers not being generated correctly. Breaking change.


  • New : Support for Delphi/C++Builder 10.1 Berlin


  • Fixed : OnModified event not being fired when blocks were moved using arrow keys
  • Fixed : Getting default printer failed with Unicode characters in Delphi 2009


  • New : RAD Studio 10 Seattle Support


  • New : TatDiagram.OnOpenEditor event gives opportunity to execute code right before text editor is displayed (when editing text in diagram object)
  • New : TDiagramControl.SelectableTextCells allows taking text cells into consideration when selecting blocks and scrolling the diagram
  • Fixed : using REMOVEGDIPLUS directive was not compiling
  • Fixed : texture brush not working when using Direct2D graphic lib
  • Fixed : Diagram navigator cropping right side of selection rectangle in some situations


  • New : Support for Delphi XE8 & C++Builder XE8


  • Fixed : Error with C++ hpp files for FlowchartBlocks (and other blocks) generated incorrectly


  • New : Package changes now allow use of runtime packages with 64-bit applications. (Breaking change)


  • New : RAD Studio XE7 support
  • New : Clicking navigator in a position now automatically scrolls the diagram to the respective position
  • Fixed : Conflict between TeeChart and TMS Diagram when using C++ Builder


  • New : Support for Delphi XE6 & C++Builder XE6 added
  • Fixed : Wrong text alignment when using TVertAlign.vaBottom or TAlignment.taRightJustify
  • Fixed : Navigator not being painted when diagram had no scrooll bars in Direct2D
  • Fixed : Links were missing when using library controls and ungrouping them


  • New : TForceLayout.ApplyNodesOnError allows the layout to be applied to diagram even if errors occur while calculating the new layout
  • New : TDiagramNavigator control provides an overview and easy navigation of the whole diagram
  • New : TDiagramEditor.ShowNavigator and NavigatorVisible properties allows full control of navigator visibility in the built-in diagram editor dialog


  • New : RAD Studio XE5 support
  • New : OnlyFocused property in diagram actions cut, copy, paste and undo, allows such actions to not perform is diagram control is not focused
  • New : Editor option to keep lines orthogonal (vertical/horizontal-only) while resizing, by keeping Ctrl key pressed
  • Fixed : List index out of bounds when no blocks are registered in diagram editor
  • Fixed : "Control has no parent window" error when loading blocks from library manager.


  • New : Diagram auto-layout using force algorithm


  • Fixed : Issue with installer for Delphi XE4 & C++Builder XE4


  • New : Added support for Delphi XE4 & C++Builder XE4


  • Fixed : Issues with installer


  • New : TTextCell.ReadOnly property
  • New : Delphi/C++Builder XE3 support
  • Improved : Property StringData now being saved in TGroupBlock and TLineJoin blocks
  • Improved : Better handling of texts in automatic icon creation in library dialog
  • Fixed : Issue with resizing using left/top/right/bottom handles and keeping aspect ratio
  • Fixed : Issue with gradient in some UML blocks
  • Fixed : Error when getting default printer when using Diagram Studio under Citrix
  • Fixed : Collapsable nodes not being hidden when an object is behind another object
  • Fixed : Block position getting rounded values in very specific situations
  • Fixed : Access Violation when a showmessage is displayed in OnInsertDControl event


  • New : TDiagramRuler.Offset property allows you to specify an initial number for the ruler different from zero
  • New : TDiagramRuler.Inverse property allows you to set the initial point of the ruler at the right (instead of left) or bottom (instead of top)
  • New : Support for collation and duplex in diagram printing (TDiagramPrintSettings)
  • New : Support for 64-bit applications
  • New : Automatic scroll when selecting controls and mouse cursor is positioned outside diagram boundaries
  • Improved : New TGroupBlock BeginUpdateMembers and EndUpdateMembers allow faster member including in group blocks
  • Fixed : Various smaller improvements & fixes
  • Fixed : Sporadic Access Violation when a showmessage is displayed in OnInsertDControl event
  • Fixed : Rare issue with block position getting rounded values when not needed.
  • Fixed : Issue with select cursor in some situations where line pen width changes.
  • Fixed : Issue with print preview in Delphi/C++Builder XE2
  • Fixed : Issue when print previewing diagram in landscape orientation


  • New : RAD Studio XE2 support
  • Fixed : TWinControlBlock not working properly with Direct2D
  • Fixed : Printing in Direct2D (forced to use GDI+)
  • Fixed : Minor issue with polylines and export to WMF
  • Fixed : Minor issue with hints when Application.HintShowPause is different than zero
  • Fixed : Minor issue with TDiagramButtons.BevelFlat property
  • Fixed : Issue with text cell autoframe not working properly with different vertical alignments
  • Fixed : Issue with RequiredConnections and OnAcceptLink event
  • Fixed : Issue with C++Builder XE installation
  • Fixed : Icons in palette toolbar for 3rd party blocks not showing when using runtime packages
  • Fixed : Block palette not updating when a library is deleted


  • Fixed : Error when opening diagram design-time editor in Delphi 7 and previous versions


  • New : Context menu for layer assignment in diagram objects.
  • Improved : Properties made public to allow creating descendants for TDgrLibraryFiler
  • Fixed : TextCell not resizing proportionally to the length of the text
  • Fixed : Text cell bounds of some diagram blocks to avoid text going outside the shape
  • Fixed : Text bounds calculated incorrectly when drawing CellFrame with AutoFrame=true (Direct2D)
  • Fixed : Painting issue moving blocks with DragStyle = dsOutline
  • Fixed : Issues exporting/printing a diagram using Direct2D
  • Fixed : Issue with block clipping (Direct2D)
  • Fixed : Issue with GDI+ using Diagram inside a DLL
  • Fixed : Issue drawing UMLStateBlock and FlowTerminalBlock with height larger than width
  • Fixed : Issue calculating handles of arcs into a group block after moving, rotating or resizing
  • Fixed : Error drawing linkpoints using GDI library
  • Fixed : Access Violation selecting a PNG file in Open Picture dialog


  • New : Properties TGdipPen.GPPen and TGdipBrush.GPBrush
  • Fixed : Issue with painting of rounded blocks (Direct2D)
  • Fixed : Incorrect drawing of Switch block (Electric blocks)
  • Fixed : Icons not painted properly on library manager when the library contains more than 15 items
  • Fixed : Flickering when moving blocks on LiveDiagram
  • Fixed : Coordinates calculated incorrectly when using AutoFrame in TextCell
  • Fixed : Access Violation in Layer Manager after changing diagram layers


  • New : TDgrLibraryItem.CreateControl to allow adding a library control to diagram programmatically
  • New : TDgrLibrary.FindItem method
  • New : RAD Studio XE support
  • Fixed : Memory leaks
  • Fixed : Arrow blocks could not be selected when using GDI library
  • Fixed : Access Violation drawing collapsable link points


  • New : TatDiagram.PageColCount and TatDiagram.PageRowCount properties
  • New : TatDiagram.GraphicLib and TDiagramControl.GraphicLib properties
  • New : TatDiagram.CustomGroupBlockClass property
  • New : TatDiagram.CustomDiagramMemoClass property
  • New : TatDiagram methods BeginUpdateSel and EndUpdateSel made public
  • New : TDiagramEditor.Diagram property
  • New : Parameter in TatDiagram.EndUpdate method for optimization
  • New : New UML and DFD blocks
  • New : Menu option to show/hide Diagram Objects tab in diagram editor
  • New : Load/clear background features in diagram editor
  • New : Improved positioning precision (from integer to floating point)
  • New : Generic classes and methods for drawing regardless of graphic library used (GDI+, Direct2D)
  • New : Fully documented source code
  • New : Direct2D support (Delphi 2010 and up)
  • Improved : Save / "Save as" features in diagram editor
  • Fixed : TDiagramToolBar.Mode property was not correctly updated on Object Inspector
  • Fixed : Problem redrawing blocks with a rotation angle
  • Fixed : Linked lines were not being moved together when moving blocks with ctrl+arrow
  • Fixed : Issues with copy/paste of runtime created blocks
  • Fixed : Incorrect width of line buttons in TDiagramEditor interface
  • Fixed : Access Violation caused by copying/pasting of layered blocks


  • New : TatDiagram.ZoomMoveToFit method to make all existing objects to be visible in the diagram client area
  • New : TatDiagram.RefreshToolbars method for requesting object toolbars to refresh its content
  • New : TatDiagram.OnBeforeCreatecontrol event
  • New : TatDiagram.MoveControlIndex method allows settings the index position of a diagram object in the internal diagram object list
  • New : TatDiagram.DesignMode provides easy way to set the whole diagram into read-only mode
  • New : TTextCell.Transparency and ParentTransparency properties
  • New : TRegDControl.Glyph and UseGlyph properties makes it easier to set an icon for a block in the diagram toolbar
  • New : TPolygonBlock.PointColor allows to define a color for the polygon point handles that is different from the regular block handles
  • New : TDiagramUndoItem.Obj property allows custom data associated with an undo item
  • New : TDiagramEditor.LibManager property
  • New : TDgrLibraryManager component implements custom Library system that allows end-user to build blocks visually in diagram and add them to the toolbar as new custom blocks
  • New : TDgrLibraryFolderFiler component allows custom blocks to be currently saved to files, but an abstract layer is provided to allow saving custom blocks to database or other media
  • New : TDgrLayerSelector combo box allows setting the layer for the selected objects
  • New : Support for diagram usage in frames, page controls, and other types of controls
  • New : Several classes, methods and properties for using new layer system programatically
  • New : Selecting one or more group members is allowed now. You can Ctrl+Click a group to select a member and individually resize, move or set properties for a block belonging to a group
  • New : Photoshop-like layer system. Named layers can be added/removed in a visual layer manager. Each layer can visually be hidden or protected from being edited
  • New : Methods MMToMeasUnit and MeasUnitToMM make it easy unit conversion from mm to currently selected measurement unit
  • New : Library manager window allows end-user to visually manage the libraries, create new libraries, define glyphs for custom blocks, among other tasks
  • New : Horizontal/vertical only moving when Shift key is pressed
  • New : Addicional object restrictions crNoLink (to prevent automatic linking) and crNoRotCenterMove (to prevent moving rotation center)
  • New : Added several events for selectors like OnDropDown, OnCloseUp, OnKeyPress, among others
  • Improved : Old layer system now supports 64 layers instead of 32 layers
  • Improved : Diagram now gives an automatic generated name for blocks inserted programatically without a name. This minimizes losing connection links in some situations
  • Improved : Demo project with library manager component allows testing the new library system
  • Improved : Compatibility with ParentBackground property allows use of transparent diagram controls (following same restrictions of ParentBackground property).
  • Fixed : Small issues with inplace text cell editor
  • Fixed : Small issue with diamond-type arrow not being painted correctly with zoomed diagram
  • Fixed : Several issues with color selectors
  • Fixed : Pasting from clipboard operation was not setting diagram modified flag
  • Fixed : Issue with text cells losing text value in rare situations
  • Fixed : Issue with font name and size selectors disappearing in tms ribbon toolbars
  • Fixed : Issue with custom glyphs in selectors not being displayed when the drop down button was pressed
  • Fixed : Issue with blocks being inserted with zero width or height
  • Fixed : Issue with auto created link points not being correctly positioned in some situations
  • Fixed : Diagram hanging when default installed printer had a default paper with small size
  • Fixed : Cross indicators were not being displayed for side lines when the line object was TDiagramLine


  • New : TatDiagram.WheelZoom, WheelZoomIncrement, WheelZoomMin, WheelZoomMax properties, allow diagram zooming in/out using Ctrl+Mouse Scroll
  • New : TatDiagram.UnitSymbol property retrieves the symbol for the current unit used in diagram page
  • New : TatDiagram.PrintSettings allows defining printing options like copies and pages to be printed
  • New : TatDiagram.PageSetupDlg method shows a dialog for page setup by end-user
  • New : TatDiagram.PageSettings property allows setting diagram page properties for printing, like paper size, margins and paper orientation
  • New : TatDiagram.MeasUnit allows to set the global measurement unit (mm, cm, in) used for diagram page settings
  • New : TatDiagram.DPrinter property returns a TDiagramPrinter object which current printer settings
  • New : TDiagramEditor.OnSaveDiagram event
  • New : TDiagramButtons.KeepInsertingMode property
  • New : Menu item "File | Page Setup" in diagram editor
  • New : Diagram print system improves overall diagram printing mechanism / dialog.
  • Improved : TDgrZoomSelector (zoom combo box) update itself automatically, being in sync with the current diagram zoom value
  • Improved : Some properties and functions had types changed from single to double to improve accuracy
  • Improved : Send to back/bring to front operations when using grouped blocks
  • Improved : Print method now can optionally show a print dialog window before printing
  • Fixed : Several fixes in the diagram selectors
  • Fixed : Issue with saving/loading png and jpg images


  • New : tmSpecific item in TTextCellsMode allows fixed text cells at source/target position of lines
  • New : Text toolbar in diagram editor dialog allows setting text alignment, vertical alignment and font style (bold, italic and underline)
  • New : TatDiagram.TextRenderingMode allows setting high-quality antialiasing text mode
  • New : TatDiagram.SelectionMode property allows to choose Visio-style block selection (objects selected are displayed as a whole group)
  • New : TatDiagram.FixedSideLines property allows a different side line behavior, where intermediate handles are not automatically repositioned
  • New : TatDiagram.CanMoveOutOfBounds property allows avoiding blocks to moved to negative positions, preventing the whole diagram to be shifted
  • New : TatDiagram methods GroupSelectedBlocks, UngroupSelectedBlocks and AddGroup for handle groups programatically
  • New : TStretchHandle.AlwaysMovable property allows a handle to be moved even when crResize restriction is present
  • New : TLinkPoint properties CanAnchor, CanAnchorInMove and AcceptAnchoreds allow better control of link point behavior
  • New : TDiagramLine.LineStyle property allows a single line object to behave like arc, side line, bezier and straight line. No need for using different line classes anymore
  • New : TDiagramControl properties IsGroup, IsMember, GroupBlock and MasterGroup provides information about block grouping
  • New : TDiagramBackground.Picture property allows more image types for diagram background image (jpg, wmf, etc.)
  • New : Protected method TDiagramControl.TextCellsChanged
  • New : Movable rotation center allows defining a new center point for rotating objects
  • New : Method in TatDiagram to export the diagram as bitmap/metafile to a stream instead of a file
  • New : Grouping concept introduced. Diagram objects can now be grouped and behave like a single object. Multi-level grouping is supported
  • New : Group/ungroup popup menu and toolbar buttons available in diagram editor
  • New : DropDownListColor property for all selector combo boxes (font selector, font size selector, etc.)
  • New : Arrow shape asAngleDiamond is a diamond which rotates according to line angle
  • Improved : TDiagramControl.GetTextCellRect method signature
  • Improved : Side line automatic positioning
  • Fixed : Small visual issue in diagram editor: "target arrow" popup menu item caption was displayed incorrectly
  • Fixed : Several compilation warnings removed
  • Fixed : Issue with arc line when the arc handles were too close to each other
  • Fixed : Error with block gradient in some specific situations
  • Fixed : Database block text cell could not be edited


  • New : TatDiagram methods CanPaste and CanCopy
  • New : TTextCell.Obj property
  • New : TLinkPoint.Visible property
  • New : TGPCanvas.DrawLine method
  • New : Rounded square block shape (TBlockShape type bsSquareRound)
  • New : Half-line arrow (TArrowShape type asHalfLine)
  • New : Delphi 2009/C++Builder 2009 support
  • Improved : TatDiagram CopyToClipboard, PasteFromClipboard and CutToClipboard methods now works with both selected objects and selected text
  • Improved : Copy/paste operations in designer now also works while editing text in blocks
  • Improved : Bezier lines with a smoother look
  • Fixed : Various smaller improvements & fixes


  • New : gsRuler grid style for a more modern, Visio-like, ruler-attached snap grid
  • New : TatDiagram.SmoothMode allows setting the anti-aliasing level (drawing in high quality)
  • New : TatDiagram.HandleStyles allows choose the visual style of the handles, between classic (small black squares) or Visio-like (medium-size green)
  • New : TatDiagram.DragStyle allows more Visio-like dragging (objects are fully drawn when moved/resized, not only the frame cursor)
  • New : TatDiagram methods for pixel/unit convertion: ClientToInches, ClientToMilimeters, MilimetersToClient, InchesToClient
  • New : TStretchHandles.RotateHandle function retrieves the handle which performs block rotation
  • New : TLiveDiagram.RunErrorMsg property provides the description of error raised while executing the diagram
  • New : TLiveDiagram.MaximumIdle property specified maximum idle time for executing nodes
  • New : TLiveDiagram protected virtual methods: DoBeforeExecuteNode and DoAfterExecuteNode
  • New : TDiagramEditor.Title property
  • New : TDiagramEditor.OnCreateDesigner and TDiagramEditor.OnShowDesigner public events
  • New : TDiagramControl.Transparency allows to specify the overall transparency for the diagram object (from 0% to 100%)
  • New : TDiagramControl.IsGdiPlus property specified is the object will be drawn using GDI+ functions
  • New : TDgrTransparencySelector control for easy setting block transparency
  • New : TBlockShadow.Transparency allows to specify shadow transparency
  • New : Property Anchors was made published in all selectors
  • New : PNG, TIF, GIF and JPG images supported in blocks (when using GDI+ mode)
  • New : Diagram editor dialog now has a new toolbar selector for setting block transparency
  • New : Design-time context popup menu options to save/load diagram to/from file
  • Improved : More modern look (and Visio-like look) in diagram editor dialog
  • Improved : All existing core blocks (flowchart, electric, arrow, live diagram) updated to be drawn with more modern look (gdi plus functions)
  • Fixed : Rare Access Violations while executing live diagrams
  • Fixed : Preview page not being centered when resizing preview window
  • Fixed : NPTIGBT electric block being drawn incorrectly
  • Fixed : Issue with "No default printed selected" message (*) GDI+ new features are not supported in C++ Builder 6


  • New : Overall drawing architecture redesigned to support GDI+ functions and provide more modern, Visio-like look and feel (*)


  • New : TatDiagram.OnAfterDrawBlock event
  • New : TatDiagram.KeyActions property
  • New : TTextCell.Visible property
  • New : TSnapGrid.Force property
  • New : TLineArrow.DiagramLine property made public
  • New : TDiagramEditor component. A ready-to-use and full-featured diagram editor including the new Visio-like toolbar (Delphi 2005 or higher) and new alignment palette
  • New : TDiagramControl.IsBackgroundControl property
  • New : TDiagramControl.CalcSize virtual method
  • New : TDiagramButtons control: a new diagram toolbar with a more Visio-like appearance. Only for Delphi version 2005 and higher
  • New : TDiagramAlign action, for making easy alignment and spacing of blocks
  • New : AIgnoreZoom parameter in TatDiagram.HandleAtPos method
  • Improved : Warnings removed
  • Improved : Now the demo just uses the TDiagramEditor component
  • Fixed : Shadow of blocks were sometimes being drawn with wrong pen width

Buy now

TMS Diagram Studio

Single developer license

license for 1 developer € 135

order now
add to cart

Small team license

license for 2 developers € 215

order now
add to cart

Site license

unlimited developers in the company € 545

order now
add to cart

CreditCards and PayPal Accepted


    Delphi 7, 2007, 2010, 2009, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, C++Builder 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria (Professional/Enterprise/Architect)