Beispiel #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="containerPanel"></param>
 /// <param name="flowItem"></param>
 /// <param name="ctlBase"></param>
 /// <param name="pathSeg"></param>
 public SegmentCtl(SMContainerPanel containerPanel, SMFlowBase flowItem,
                   SMCtlBase ctlBase, SMPathSegment pathSeg)
 {
     _containerPanel = containerPanel;
     _flowItem       = flowItem;
     _ctlBase        = ctlBase;
     _pathSeg        = pathSeg;
     if (pathSeg.First is SMPathOutError)
     {
         _penLine     = new Pen(Color.Red, 2);
         _penSelected = new Pen(Color.Red, 6);
         _penNoTarget = new Pen(Color.Salmon, 6);
     }
     else if (pathSeg.First is SMPathOutStop)
     {
         _penLine     = new Pen(Color.Black, 2);
         _penSelected = new Pen(Color.Blue, 6);
         _penNoTarget = new Pen(Color.DarkGray, 6);
     }
     else
     {
         _penLine     = new Pen(Color.Green, 2);
         _penSelected = new Pen(Color.Green, 6);
         _penNoTarget = new Pen(Color.DarkGreen, 6);
     }
     _ctlBase.LocationChanged += new EventHandler(ctlBase_OnLocationChanged);
     InitializeComponent();
 }
        /// <summary>
        /// Move the arrow to the right position
        /// </summary>
        /// <param name="flowItem"></param>
        /// <param name="pathOut"></param>
        public void MoveIt(SMFlowBase flowItem, SMPathOut pathOut)
        {
            try
            {
                _ctrlBasefromPathOut = _containerPanel.GetFlowCtl(pathOut.Owner.Name);
                _ctlBaseTgt          = _containerPanel.GetFlowCtl(pathOut.TargetID);
                if (_ctlBaseTgt == null)
                {
                    return;
                }
                Size  arrowSize      = global::MCore.Comp.SMLib.SMFlowChart.Properties.Resources.ArrowUp.Size;
                Point borderLocation = _ctlBaseTgt.Location;
                Size  borderSize     = _ctlBaseTgt.Size;
                borderLocation.Offset(-arrowSize.Width, -arrowSize.Height);
                borderSize.Width  += arrowSize.Width;
                borderSize.Height += arrowSize.Height;
                Rectangle     rcBorder    = new Rectangle(borderLocation, borderSize);
                PointF        endPt       = flowItem.FindEndPoint(pathOut);
                Point         pixXY       = SMContainerPanel.GridToPixel(endPt);
                SMPathSegment pathLastSeg = pathOut.Last;
                if (pathLastSeg.Vertical)
                {
                    if (pathLastSeg.GridDistance < 0)
                    {  // Up
                        SetBackgroundImage(global::MCore.Comp.SMLib.SMFlowChart.Properties.Resources.ArrowUp);
                        Location = new Point(pixXY.X - arrowSize.Width / 2, rcBorder.Bottom);
                    }
                    else
                    {  // Down
                        SetBackgroundImage(global::MCore.Comp.SMLib.SMFlowChart.Properties.Resources.ArrowDown);
                        Location = new Point(pixXY.X - arrowSize.Width / 2, rcBorder.Top);
                    }
                }
                else
                {
                    if (pathLastSeg.GridDistance < 0)
                    {  // Left
                        SetBackgroundImage(global::MCore.Comp.SMLib.SMFlowChart.Properties.Resources.ArrowLeft);
                        Location = new Point(rcBorder.Right, pixXY.Y - arrowSize.Height / 2);
                    }
                    else
                    {  // Right
                        SetBackgroundImage(global::MCore.Comp.SMLib.SMFlowChart.Properties.Resources.ArrowRight);
                        Location = new Point(rcBorder.Left, pixXY.Y - arrowSize.Height / 2);
                    }
                }

                _ctrlBasefromPathOut.LocationChanged += new EventHandler(ctrlBasefromPathOut_OnLocationChanged);
                _locOfstFromCtrlBase = new Point(_ctrlBasefromPathOut.Location.X - this.Location.X, _ctrlBasefromPathOut.Location.Y - this.Location.Y);
                Show();
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
        }
Beispiel #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="pathSegmentBool"></param>
 public YesNoLabel(SMCtlBase smCrlBase, SMPathOutBool pathSegmentBool)
 {
     _smCrlBase                  = smCrlBase;
     PathSegmentBool             = pathSegmentBool;
     _smCrlBase.LocationChanged += new EventHandler(smCrlBase_OnLocationChanged);
 }