-OnObjectHook
-OnObjectUnhook
Here:
TSimpleGraph.MouseDown
- Code: Select all
// A Link is under cursor
else
begin
if (Button = mbLeft) and not (ssDouble in Shift) and
(MarkerAtCursor in [mtMoveEndPt, mtMoveStrartPt]) then
begin
if MarkerAtCursor = mtMoveEndPt then
StartPoint := TGraphLink(ObjectAtCursor).FromNode.Center
else
StartPoint := TGraphLink(ObjectAtCursor).ToNode.Center;
StopPoint := Pt;
State := gsMoveLink;
Linking := True;
DoObjectHook(ObjectAtCursor); //DoObjectHook
and here:
TSimpleGraph.MouseUp
- Code: Select all
begin
Pt := ClientToGraph(X, Y);
NodeAtCursor := TGraphNode(FindObjectAt(Pt.X, Pt.Y, TGraphNode));
if NodeAtCursor <> nil then
begin
LinkAtCursor := TGraphLink(ObjectAtCursor);
case MarkerAtCursor of
mtMoveStrartPt:
if IsValidLink(LinkAtCursor, NodeAtCursor, LinkAtCursor.ToNode) and
CanLinkNodes(NodeAtCursor, LinkAtCursor.ToNode)
then
begin;
LinkAtCursor.FromNode := NodeAtCursor;
DoObjectUnhook(LinkAtCursor); //DoObjectUnhook
end;
mtMoveEndPt:
if IsValidLink(LinkAtCursor, LinkAtCursor.FromNode, NodeAtCursor) and
CanLinkNodes(LinkAtCursor.FromNode, NodeAtCursor)
then
begin;
LinkAtCursor.ToNode := NodeAtCursor;
DoObjectUnhook(LinkAtCursor); //DoObjectUnhook
At moment just implemented for links, this events allows to run whatever when you are moving they.