- Fixed bug in the
ForEachObjectmethod of the TSimpleGraph control. The method was always returning zero. - Renamed the
ContainsRectmethod of the TGraphObject class toIntersectsWithfor sake of clarity. - Renamed the
TGraphNodeResizeEventevent type toTGraphNodeNotifyEvent. - Refactored the code.
- Improved the documentation.
- Fixed a bug in wrapping text (Thanks to Oleg).
- Fixed the bug causing some random characters appear on the caption of links.
- Improved positioning of the links' caption.
- Fixed the compatibility issues with Delphi XE2 and XE3.
- Added the
gloFixedAnchorStartPointandgloFixedAnchorEndPointoptions to theLinkOptionsproperty of the TGraphLink class. These options determine whether the hooked links should be anchored to a fixed point on the target object or not.
- Fixed code malfunction in changing the
Left,Top,Width, andHeightproperties of the TGraphNode class inside aBeginUpdate/EndUpdateblock.
- Re-entrance problem in repositioning of hooked objects is fixed (Thanks to cml0816).
- Problem in selecting horizontal and vertical links with one pixel width is fixed (Thanks to cml0816).
- Added the
PushandPopmethods to the TGraphObjectList class.
- Fixed compatibility issue with Delphi 2009.
- Fixed bug in the
NormalizeBreakPointsmethod of the TGraphLink class (Thanks to liu8670). - Fixed bug in the
ZoomRectmethod of the TSimpleGraph control (Thanks to Choe, Cheng-Dae).
- Fixed the compatibility issue with Delphi 5.
- Fixed a bug in managing mouse, which was occurred when the
CommandModeproperty was set tocmViewOnly.
- Added the
OnObjectMouseEnterandOnObjectMouseLeaveevents to the TSimpleGraph control. - Added the
DragSourceandObjectAtCursorproperties to the TSimpleGraph control. - Added the
ResizeSelectionmethod to the TSimpleGraph control.
- Introduced the
OverlappedRectglobal procedure. - Added the
Transparentproperty to the TSimpleGraph control. - Added the
ChangeZoom,ChangeZoomBy, andAlignSelectionmethods to the TSimpleGraph control. - Fixed a bug in drawing child controls.
- Fixed a bug in calculating range of scroll bars when the control had some aligned child controls.
- Fixed a bug in scrolling the graph by keyboard.
- Fixed a bug in the
Assignmethod of the TGraphObjectList class.
- Introduced the TCompatibleCanvas class.
- Introduced
cmPanas a new option for theCommandModeproperty of the TSimpleGraph control. - Added the
OnMoveResizeNodeevent to the TSimpleGraph control. - Fixed a bug in the
FindObjectAtmethod of the TSimpleGraph control. - Fixed a bug in triggering some events while loading or clearing a graph.
- Added the
SourceRectproperty to the TGraphConstraints class. - Fixed a bug in merging graphs.
- Introduced the TCanvasRecall class.
- Added the
UnionRectandIntersectRectglobal procedures. - Added the
ClipboardFormats,DraggingObjects, andDraggingBoundsproperties to the TSimpleGraph control. - Added the
ScrollCenter,ScreenToGraph,GraphToScreen,SnapPoint,SnapOffset,FindObjectByID,ForEachObject,SaveAsBitmap,CopyToGraphic,MergeFromStream,MergeFromFile, andInvalidateRectmethods to the TSimpleGraph control. - Added
OnObjectInitInstance,OnObjectChange,OnCanRemoveObject,OnObjectReadandOnObjectWriteevents to the TSimpleGraph control. - Added the
ID,Data,States,HasCustomData,VisualRect,SelectedVisualRect,Dependents,DependentCount,LinkInputs,LinkInputCount,LinkOutputs, andLinkOutputCountproperties to the TGraphObject class. - Added the
CanDelete,DragBy, andInvalidatemethods to the TGraphObject class. - Added the missing
AssignTomethod to the TGraphObject class. - Added the
IsNodeclass method to the TGraphObject class. - Added the
Createconstructor to the TGraphObject class. - Added the
CreateNewconstructor to the TGraphLink class. - Added the
CreateNewconstructor to the TGraphNode class. - Changed signature of the
BeginDragandDragTomethods of the TGraphObject class. - Changed the return value of the
ConvertTomethod of the TGraphObject class. - Changed the TGraphObjectList class. The new implementation provides safe enumeration of the graph objects even when the list is changed during the enumeration.
- Changed the
OnObjectBeginDragandOnObjectEndDragevents of the TSimpleGraph control, so that more information about the dragging object be available. - Changed zooming properties of the TSimpleGraph control. The current zoom range is between 5% and 36863%. Because of the new
OnMouseWheelDownandOnMouseWheelUpevents of the control, the control does not change the zoom factor internally. Due to these changes,ZoomMin,ZoomMax, andZoomStepproperties of the control are removed. - Changed signature of the
FindObjectAtmethod of the TSimpleGraph control. - Improved painting algorithm to increase speed and reduce CPU usage.
- Fixed a bug in moving a group of selected link objects.
- Fixed a bug in inserting links, which were occurring in Delphi 4 and 5.
- Fixed the bug about not triggering the
OnObjectUnhookevent of the TSimpleGraph control when unhooking was the result of an object deletion. - Fixed a bug in saving the
BackgroundMarginsproperty of the TGraphObject class. - Fixed a bug in the
MinimizeTextglobal procedure. In addition, three periods as ellipsis (...) is changed to a single character ellipses (…) if the font supports it. - Fixed a bug regarding positioning of the links.
- Fixed some minor other bugs.
- And, many other improvements in the stability and performance of the code.
To improve performance and functionality of the control, most part of the code is rewritten. This may lead to some breaking changes in your code.
Changes in the TSimpleGraph class:
- Added the
LockLinksproperty. - Added the
OnObjectBeginDragandOnObjectEndDragevents. - Added the
OnObjectHookandOnObjectUnhookevents. - Added the
OnCanHookLinkevent. - Replaced the
OnCanLinkNodesevent with theOnCanLinkObjectsevent. - Replaced the
ToggleNodesAtmethod with theToggleSelectionmethod. The new method is more flexible and detects objects that are either inside or intersecting with the selection rectangle. - Added an overload for the
FindObjectAtmethod. - Changed
Boundsparameter of theInsertNodemethod fromPRecttoTRect. - Replaced the
LinkNodesmethod with theInsertLinkmethod. The new method has four overloads. - Added the
ClearSelectionmethod. - Renamed the
cmLinkNodesvalue of theCommandModeproperty tocmInsertLink. - Removed the
IsValidLinkmethod. Use theCanLinkmethod of the TGraphLink class as substitute. - Changed some keyboard and mouse actions. As of now, each object has its own keyboard and mouse events.
- Added the missing constraints check while moving/resizing objects by keyboard.
Changes in the [TGraphObject] class:
- Added the
Optionsproperty. - Added the
Draggingproperty as read-only. - Added the
BeginDrag,DragTo, andEndDragmethods. - Added the
HitTestmethod. - Added the
ContainsRectmethod. - Added the
Deletemethod. - Added the
IsLockedmethod. - Changed the
IsLinkproperty to class method.
Changes in the TGraphLink class:
- Improved functionality. Each endpoint of a link can be hooked to a graph object (node or link), and style of each endpoint is customizable. The new links can have breakpoints.
- Added the
Points,PointCount, andPolylineproperties. - Added the
TextPositionandTextSpacingproperties. - Added the
LinkOptionsproperty. - Replaced the
Kindproperty with theBeginStyleandEndStyleproperties. - Replaced the
ArrowSizeproperty with theBeginSizeandEndSizeproperties. - Replace the
FromNodeandToNodeproperties with theSourceandTargetproperties. - Added the
CanMovemethod. - Added the
AddPoint,InsertPoint,RemovePoint,IndexOfPoint,AddBreakPoint, andNormalizeBreakpointsmethods for manipulating thePolylineproperty. - Added the
IsFixedPoint,IsHookedPoint,HookedObjectOf,HookedIndexOf, andHookedPointCountmethods. - Added the
CanHook,Hook,Unhook,CanLink, andLinkmethods for managing the hooking and linking actions. - Added the
RotateandScalemethods.
Changes in the TGraphNode class:
- Added the
NodeOptionsproperty. - Added the
BackgroundMarginsproperty. - Added the
CanMoveResizemethod. - Removed the
QueryLinkTomethod. - Fixed clipped text problem that was occurring when graph was zoomed in.
- Introduced the Hexagonal node shape.
Changes in the TPolygonalNode class:
- Added the
Verticesproperty as read-only.
Changes in the TRectangularNode class:
- Changed the base class from the TGraphNode class to the TPolygonalNode class.
Changes in the TGraphConstraints class:
- Added the
WithinBoundsmethod. - Added the
ConfineOffsetmethod. - Changed signature of
ConfinePtandConfineRectmethods. - Fixed malfunction of the
ConfineRectmethod.
Changes in global procedures:
- Added the
NormalizeAngle,EqualPoint,ScalePoints,ShiftPoints,MakeSquare,LineLength,NearestPointOnLine, andIntersectLinePolylinefunctions. - Changed signature of the
IntersectLineRect,IntersectLineEllipse,IntersectLineRoundRect, andIntersectLinePolygonfunctions. - Changed the return type of the
DistanceToLinefunction from integer to double. - Changed type of
DistanceFromThisPtparameter of theNextPointOfLinefunction from integer to double.
- Added the
OnZoomChangeevent the TSimpleGraph control. - Fixed bug on calling the
OnResizeandOnCanResizeevents of the TSimpleGraph control.
- Added the
FixedScrollBarsproperty to the TSimpleGraph control. - Applied constrains check on the new nodes inserted by mouse actions.
- Added the
ConfinePtandConfineRectmethods to the TGraphConstraints class.
- Introduced the TGraphConstraints class.
- Replaced the
FreezeTopLeftproperty of the TSimpleGraph control with theGraphConstraintsproperty. - Added missing
OnClickandOnObjectClickto the TSimpleGraph control. - Improved paint handler to remove memory limit on graph's bounds and speed up drawing.
- The TSimpleGraph control accepts child controls now.
- Added the
OnInfoTipevent to the TSimpleGraph control. - Introduced the
NearestPointglobal procedure. - Changed all
Extendeddata types toDoubleto prevent "Invalid Floating Point Operation" exception. - Fixed the bug in calculating the end points of the links.
- Dropped the limit on the number of allowed polygon's vertices in the TPolygonalNode class.
- Added the
Layoutproperty to the TGraphNode class. - Added the
DrawOrderproperty to the TSimpleGraph control. - Added
OnBeforeDraw,OnAfterDraw,OnObjectBeforeDraw, andOnObjectAfterDrawto the TSimpleGraph control. - Introduced the
WrapTextandMinimizeTextglobal procedures. - Displayed caption of objects as hint if the caption does not fit on the screen.
- Fixed issue with drawing caption of nodes for zoom factors other than 100%.
- Some minor tweaks.
- Added the
Hintproperty to the TGraphObject class.
- Workaround a Windows API bug. If the view size of a metafile image is larger than the screen size, Windows API cannot clip it.
- Fixed bug in copy/paste functions.
- Fixed memory leak issue.
- Fixed the black border artifact, which was appearing during scroll.
- Fixed bug in calculating range of the scroll bars.
- Added the
MinNodeSizeproperty the TSimpleGraph control. - Added the
ArrowSizeto the TGraphLink class. - Some minor tweaks.
- Fixed bug related to the
FreezeTopLeftproperty of the TSimpleGraph control.
- Fixed bug in moving/resizing overlapped objects.
- Added the
FreezeTopLeftproperty to the TSimpleGraph control.
- Fixed the scrolling malfunction when the zoom was greater than 100%.
- Fixed a minor bug.
- Added the
VisibleBoundsproperty to the TSimpleGraph control. - Introduced the abstract TPolygonalNode class.
- Introduced the Triangular, Rhomboidal, and Pentagonal node shapes.
- Added some new global functions.
- Improved performance.
- Fixed the compiler error on Delphi 4.
- Added the
SelectionBoundsproperty to the TSimpleGraph control. - Added the
ZoomRect,ZoomObject,ZoomSelection, andZoomGraphto the TSimpleGraph control. - Added the missing
GraphToClientmethod to the TSimpleGraph control. - Some minor tweaks.
- Introduced the zooming capabilities. As the result, the
Zoom,ZoomMin,ZoomMaxandZoomStepproperties are added to the TSimpleGraph control. - Added the
ClientToGraphmethod to the TSimpleGraph control.
- Added the
Kindproperty to the TGraphLink class. - Renamed the
LinkTypeTomethod of TGraphNode class toQueryLinkTo. Also, improved its functionality.
- Smashed some bugs.
- Fixed the division by zero exception in calculating the distance of a point from a line.
- Added the
Backgroundproperty to the TGraphNode class.
- Added the
PrintandSaveAsMetafilemethods to the TSimpleGraph control. - Removed the
PaintTomethod of the TSimpleGraph control. - Add the
HideSelectionproperty to the TSimpleGraph control.
- Added the
AlignmentandMarginproperties to the TGraphNode class.
- Polished the code for the initial public domain release.
- Fixed issue in finding the intersection of a line and a round rectangle.
- Fixed bug in movement of links.
- Fixed the wrong behavior of the control when nodes were locked.
- Initial release.