anchor.diff:    C.LineTo(X2, Y2);
   end;
   
  +procedure CanvasPaintTriangleDown(C: TCanvas; AColor: TColor; ACoord: TPoint; ASize: integer);
  +begin
  +  C.Brush.Color:= AColor;
  +  C.Pen.Color:= AColor;
  +  C.Polygon([
  +    Point(ACoord.X - ASize*2, ACoord.Y - ASize),
  +    Point(ACoord.X + ASize*2, ACoord.Y - ASize),
  +    Point(ACoord.X, ACoord.Y + ASize)
  +    ]);
  +end;
  +
  +procedure CanvasPaintTriangleRight(C: TCanvas; AColor: TColor; ACoord: TPoint; ASize: integer);
  +begin
  +  C.Brush.Color:= AColor;
  +  C.Pen.Color:= AColor;
  +  C.Polygon([
  +    Point(ACoord.X - ASize, ACoord.Y - ASize*2),
  +    Point(ACoord.X + ASize, ACoord.Y),
  +    Point(ACoord.X - ASize, ACoord.Y + ASize*2)
  +    ]);
  +end;
  +
  +procedure CanvasPaintTriangleLeft(C: TCanvas; AColor: TColor; ACoord: TPoint; ASize: integer);
  +begin
  +  C.Brush.Color:= AColor;
  +  C.Pen.Color:= AColor;
  +  C.Polygon([
  +    Point(ACoord.X + ASize, ACoord.Y - ASize*2),
  +    Point(ACoord.X - ASize, ACoord.Y),
  +    Point(ACoord.X + ASize, ACoord.Y + ASize*2)
  +    ]);
  +end;
  +
  +
   procedure DrawTriangleRaw(C: TCanvas; const P1, P2, P3: TPoint; Color: TColor);
   begin
     C.Brush.Color:= Color;
  
positive.code:         FRectArrowDown,
          IfThen(bOver and not _IsDrag,
            FColorArrowOver,
            FColorArrow),
          FColorBg);
        DoPaintAfter(ElemType, -1, C, FRectArrowDown);
      end;
  end;
  
negative.code:       DoPaintArrowTo(C,
          atriLeft,
          R,
          IfThen(bOver, FColorArrowOver, FColorArrow)
          );
        DoPaintAfter(ElemType, -1, C, FRectArrowLeft);
      end;
  end;
  