cxsplitter.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,764 行 · 第 1/5 页

PAS
1,764
字号
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left + 4, ARect.Top),
        Point(ARect.Right + 1, ARect.Top));
      {Light border}
      if AClicked = False then
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Bottom - 4),
          Point(ARect.Left + 1, ARect.Top + 3));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Top + 2),
          Point(ARect.Left + 2, ARect.Top + 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Top + 2),
          Point(ARect.Left + 4, ARect.Top + 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Top + 1),
          Point(ARect.Right, ARect.Top + 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Bottom - 2),
          Point(ARect.Left + 2, ARect.Bottom - 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Bottom - 2),
          Point(ARect.Left + 4, ARect.Bottom - 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Bottom - 1),
          Point(ARect.Left + 5, ARect.Bottom - 1));
      end
      else
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Right - 1, ARect.Bottom - 1),
          Point(ARect.Right - 1, ARect.Top + 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Bottom - 2),
          Point(ARect.Left + 4, ARect.Bottom - 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Bottom - 1),
          Point(ARect.Left + 7, ARect.Bottom - 1));
      end;
    end;
    cxsdRightToLeft:
    begin
      {Shadow border}
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right, ARect.Bottom - 4),
        Point(ARect.Right, ARect.Top + 3));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left, ARect.Bottom),
        Point(ARect.Left, ARect.Top));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 1, ARect.Bottom - 2),
        Point(ARect.Right - 1, ARect.Bottom - 4));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 1, ARect.Top + 2),
        Point(ARect.Right - 1, ARect.Top + 4));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 2, ARect.Bottom - 1),
        Point(ARect.Right - 4, ARect.Bottom - 1));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 2, ARect.Top + 1),
        Point(ARect.Right - 4, ARect.Top + 1));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 4, ARect.Bottom),
        Point(ARect.Left, ARect.Bottom));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 3, ARect.Top),
        Point(ARect.Left - 1, ARect.Top));
      {Light border}
      if AClicked = False then
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Bottom - 1),
          Point(ARect.Left + 1, ARect.Top + 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Top + 1),
          Point(ARect.Left + 4, ARect.Top + 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Top + 2),
          Point(ARect.Left + 6, ARect.Top + 2));
      end
      else
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 3, ARect.Top + 1),
          Point(ARect.Left + 4, ARect.Top + 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Top + 2),
          Point(ARect.Left + 6, ARect.Top + 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 5, ARect.Top + 2),
          Point(ARect.Left + 5, ARect.Top + 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 6, ARect.Top + 4),
          Point(ARect.Left + 6, ARect.Bottom - 3));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Bottom - 1),
          Point(ARect.Left + 4, ARect.Bottom - 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Bottom - 2),
          Point(ARect.Left + 6, ARect.Bottom - 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 5, ARect.Bottom - 2),
          Point(ARect.Left + 5, ARect.Bottom - 4));
      end;
    end;
    cxsdTopToBottom:
    begin
      {Shadow border}
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left + 4, ARect.Top),
        Point(ARect.Right - 3, ARect.Top));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left, ARect.Bottom),
        Point(ARect.Right, ARect.Bottom));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left + 2, ARect.Top + 1),
        Point(ARect.Left + 4, ARect.Top + 1));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 2, ARect.Top + 1),
        Point(ARect.Right - 4, ARect.Top + 1 ));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left + 1, ARect.Top + 2),
        Point(ARect.Left + 1, ARect.Top + 4));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 1, ARect.Top + 2),
        Point(ARect.Right - 1,ARect.Top + 4));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left, ARect.Top + 4),
        Point(ARect.Left, ARect.Bottom));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right, ARect.Top + 4),
        Point(ARect.Right, ARect.Bottom + 1));
      {Light border}
      if AClicked = False then
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Top + 1),
          Point(ARect.Right - 3, ARect.Top + 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Right - 2, ARect.Top + 2),
          Point(ARect.Right - 4, ARect.Top + 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Right - 2, ARect.Top + 2),
          Point(ARect.Right - 2, ARect.Top + 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Right - 1, ARect.Top + 4),
          Point(ARect.Right - 1, ARect.Bottom));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Top + 2),
          Point(ARect.Left + 4, ARect.Top + 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Top + 2),
          Point(ARect.Left + 2, ARect.Top + 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Top + 4),
          Point(ARect.Left + 1, ARect.Top + 5));
      end
      else
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Bottom - 1),
          Point(ARect.Right - 1, ARect.Bottom - 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Top + 2),
          Point(ARect.Left + 2, ARect.Top + 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Top + 4),
          Point(ARect.Left + 1, ARect.Top + 7));
      end;
    end;
    cxsdBottomToTop:
    begin
      {Shadow border}
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left + 4, ARect.Bottom),
        Point(ARect.Right - 3, ARect.Bottom));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left, ARect.Top),
        Point(ARect.Right, ARect.Top));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left + 2, ARect.Bottom - 1),
        Point(ARect.Left + 4, ARect.Bottom - 1));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 2, ARect.Bottom - 1),
        Point(ARect.Right - 4, ARect.Bottom - 1 ));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left + 1, ARect.Bottom - 2),
        Point(ARect.Left + 1, ARect.Bottom - 4));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right - 1, ARect.Bottom - 2),
        Point(ARect.Right - 1,ARect.Bottom - 4));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Left, ARect.Bottom - 4),
        Point(ARect.Left, ARect.Top));
      DrawCanvasLine(ACanvas.Canvas, ShadowColor, Point(ARect.Right, ARect.Bottom - 3),
        Point(ARect.Right, ARect.Top - 1));
      {Light border}
      if AClicked = False then
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Top + 1),
          Point(ARect.Right - 1, ARect.Top + 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Bottom - 2),
          Point(ARect.Left + 2, ARect.Bottom - 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Bottom - 4),
          Point(ARect.Left + 1, ARect.Bottom - 7));
      end
      else
      begin
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 4, ARect.Bottom - 1),
          Point(ARect.Right - 3, ARect.Bottom - 1));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Right - 2, ARect.Bottom - 2),
          Point(ARect.Right - 4, ARect.Bottom - 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Right - 2, ARect.Bottom - 2),
          Point(ARect.Right - 2, ARect.Bottom - 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Right - 1, ARect.Bottom - 4),
          Point(ARect.Right - 1, ARect.Top));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Bottom - 2),
          Point(ARect.Left + 4, ARect.Bottom - 2));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 2, ARect.Bottom - 2),
          Point(ARect.Left + 2, ARect.Bottom - 4));
        DrawCanvasLine(ACanvas.Canvas, LightColor, Point(ARect.Left + 1, ARect.Bottom - 4),
          Point(ARect.Left + 1, ARect.Bottom - 5));
      end;
    end;
  end;
end;

procedure TcxMediaPlayer8Style.DrawArrowRect(ACanvas: TcxCanvas; const ARect: TRect;
  const AHighlighted, AClicked: Boolean);
begin
  ACanvas.Brush.Color := FOwner.Color;
  ACanvas.FillRect(ARect);
  if AClicked = False then
    DrawBounds(ACanvas, ARect, FShadowColor, FLightColor)
  else
    DrawBounds(ACanvas, ARect, FLightColor, FShadowColor);
end;
{ TcxMediaPlayer8Style }

{ TcxXPTaskBarStyle }
constructor TcxXPTaskBarStyle.Create(AOwner: TcxCustomSplitter);
begin
  inherited Create(AOwner);
  FLightColor := clWindow;
  FShadowColor := clBtnShadow;
end;

procedure TcxXPTaskBarStyle.Assign(Source: TPersistent);
begin
  if (Source is TcxXPTaskBarStyle) then
  begin
    inherited Assign(Source);
    with (Source as TcxXPTaskBarStyle) do
    begin
      Self.LightColor := LightColor;
      Self.ShadowColor := ShadowColor;
    end;
  end
  else
    inherited Assign(Source);
end;

procedure TcxXPTaskBarStyle.SetLightColor(Value: TColor);
begin
  if FLightColor <> Value then
  begin
    FLightColor := Value;
    Changed;
  end;
end;

procedure TcxXPTaskBarStyle.SetShadowColor(Value: TColor);
begin
  if FShadowColor <> Value then
  begin
    FShadowColor := Value;
    Changed;
  end;
end;

function TcxXPTaskBarStyle.DrawHotZone(ACanvas: TcxCanvas; const ARect: TRect;
  const AHighlighted, AClicked: Boolean): TRect;
begin
  Result := CalculateHotZoneRect(ARect);
  ACanvas.Canvas.Lock;
  try
    ACanvas.Canvas.Brush.Color := Owner.Color;
    DrawBackground(ACanvas, HotZoneRect, AHighlighted, AClicked);
    DrawSplitterDots(ACanvas, FLTPointsRect, not AClicked, True, FLightColor,
      FShadowColor, SplitterDirection, 4, 0);
    DrawSplitterDots(ACanvas, FRBPointsRect, not AClicked, True, FLightColor,
      FShadowColor, SplitterDirection, 4, 0);
  finally
    ACanvas.Canvas.Unlock;
  end;
end;

function TcxXPTaskBarStyle.CalculateHotZoneRect(const ABounds: TRect): TRect;
var
  FRect : TRect;
  FHotZoneRectSize, FPos: Integer;
begin
  Result := inherited CalculateHotZoneRect(ABounds);

  FRect := ABounds;
  case SplitterDirection of
    cxsdLeftToRight, cxsdRightToLeft:
    begin
      FRect.Right := FRect.Left + SplitterDefaultSize - 1;
      FHotZoneRectSize := ((FRect.Bottom - FRect.Top) * SizePercent) div 100;
      FPos := ((FRect.Bottom - FRect.Top) div 2) - (FHotZoneRectSize div 2);
      Result := Rect(FRect.Left, FPos, FRect.Right, FPos + FHotZoneRectSize);
      FLTPointsRect := Rect(Result.Left + 1, Result.Top,
        (Result.Right div 2), Result.Bottom);
      FRBPointsRect := Rect((Result.Right div 2) + 1, Result.Top + 3,
        Result.Right, Result.Bottom);
    end;
    else
    begin
      FRect.Bottom := FRect.Top + SplitterDefaultSize - 1;
      FHotZoneRectSize := ((FRect.Right - FRect.Left) * SizePercent) div 100;
      FPos := ((FRect.Right - FRect.Left) div 2) - (FHotZoneRectSize div 2);
      Result := Rect(FPos, FRect.Top, FPos + FHotZoneRectSize, FRect.Bottom);
      FLTPointsRect := Rect(Result.Left, Result.Top + 1,
        Result.Right, Result.Bottom div 2);
      FRBPointsRect := Rect(Result.Left + 3, (Result.Bottom div 2) + 1,
        Result.Right, Result.Bottom);
    end;
  end;
  HotZoneRect := Result;
end;

procedure TcxXPTaskBarStyle.DrawBackground(ACanvas: TcxCanvas; const ARect: TRect;
  const AHighlighted, AClicked: Boolean);
begin
  if AreVisualStylesAvailable and Owner.NativeBackground then
    cxDrawThemeParentBackground(Owner, ACanvas, ARect)
  else
  begin
    ACanvas.Brush.Color := Owner.Color;
    ACanvas.FillRect(ARect);
  end;
end;
{ TcxXPTaskBarStyle }

{ TcxSimpleStyle }
constructor TcxSimpleStyle.Create(AOwner: TcxCustomSplitter);
begin
  inherited Create(AOwner);
  FLightColor := clWindow;
  FShadowColor := clBtnShadow;
  FArrowColor := clWindowText;
  FArrowHighlightColor := clWindow;
  FDotsColor := clHighlight;
  FDotsShadowColor := clWindow;
end;

procedure TcxSimpleStyle.Assign(Source: TPersistent);
begin
  if (Source is TcxSimpleStyle) then
  begin
    inherited Assign(Source);
    with (Source as TcxSimpleStyle) do
    begin
      Self.LightColor := LightColor;
      Self.ShadowColor := ShadowColor;
      Self.ArrowColor := ArrowColor;
      Self.ArrowHighlightColor := ArrowHighlightColor;
      Self.DotsColor := DotsColor;
      Self.DotsShadowColor := DotsShadowColor;
    end;
  end
  else
    inherited Assign(Source);
end;

procedure TcxSimpleStyle.SetLightColor(Value: TColor);
begin
  if FLightColor <> Value then
  begin
    FLightColor := Value;
    Changed;
  end;
end;

procedure TcxSimpleStyle.SetShadowColor(Value: TColor);
begin
  if FShadowColor <> Value then
  begin
    FShadowColor := Value;
    Changed;
  end;
end;

procedure TcxSimpleStyle.SetArrowColor(Value: TColor);
begin
  if FArrowColor <> Value then
  begin
    FArrowColor := Value;
    Changed;
  end;
end;

procedure TcxSimpleStyle.SetArrowHighlightColor(Value: TColor);
begin
  if FArrowHighlightColor <> Value then

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?