GoStrokeStyle.Bezier


#1

I Have couple of nodes and links coming from the database.
I am dynamically creating the links between the nodes using the GoLabeledLink Class. The same way as one of your Satechart demos. When I run your Statechart demo the links can be adjusted and also curved around. But when I try to do the same in my app instead of the link having 4 points it shows only 2 hence I cannot set the curviness of the link. <?xml:namespace prefix = o ns = “urn:schemas-microsoft-com:office:office” /><o:p></o:p>
This code to create the link (this = linked object)<o:p></o:p>

this.Selectable = true;

this.Style = GoStrokeStyle.Bezier;

this.ToArrow = true;

this.RealLink.Pen = new Pen(Color.Green, 2);

I see the effect of Color.Green. also code to highlight the selected link.

Q. how do I get four points so that I can move the link around?

Thanks


#2

Maybe the ports at both ends don’t have the link point and direction dynamically computed, probably because their FromSpot and/or ToSpot properties aren’t GoObject.NoSpot.
The port used by a GoBasicNode, as used by the StateCharter example, automatically sets GoPort.FromSpot and ToSpot to GoObject.NoSpot.


#3

I am not able to set FromSpot and ToSpot properties to GoObject.NoSpot.
I have a Dataset returning the tasks to me i create a GOSimpleNode derived class I need this clas as my nodes have their own images
this is how i create the node
n2 = new GraphNodeSimple (GraphNodeKind.Decision); //GraphnodeSimple is derived from GoSimpleNode
n2.Initialize(null, Server.MapPath(“images/Decisiontask.bmp”), myRow[1].ToString());
n2.Left = System.Convert.ToInt64(myRow[3].ToString());
n2.Top = System.Convert.ToInt64(myRow[4].ToString());
n2.PartID = System.Convert.ToInt32(myRow[0].ToString());
// n2.FromSpot = GoObject.NoSpot;
// n2.ToSpot=GoOject.NoSpot;
MyView.Document.Add(n2);
is there a better way to do this according to your experience so that i can have links move around.
this will be a great help.
Thanks


#4

FromSpot and ToSpot are properties of GoPort, not of GoSimpleNode (or any GoNode for that matter).
Try:
n2.InPort.FromSpot = GoObject.NoSpot;
n2.InPort.ToSpot = GoObject.NoSpot;
n2.OutPort.FromSpot = GoObject.NoSpot;
n2.OutPort.ToSpot = GoObject.NoSpot;
This might not get you the results that you want. You may need to override GoLink.FirstPickIndex to return 0 and GoLink.LastPickIndex to return PointsCount-1. But before you do that, just try this first.