⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iswitchslider.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 4 页
字号:
                          Brush.Color := clBtnFace;
                          Rectangle(Left, Top, Right, Bottom);

                          Pen.Color   := clWhite; PolyLine([Point(Left,  Bottom), Point(Left,  Top   ), Point(Right, Top   )]);
                          Pen.Color   := clBlack; PolyLine([Point(Right, Top   ), Point(Right, Bottom), Point(Left,  Bottom)]);

                          if FMouseDown or FKeyDown then
                            begin
                              case FOrientation of
                                ioHorizontal : begin
                                                 Pen.Color:=clBtnShadow;                 Line(Canvas, (Left+Right)div 2 -1,Top+1,(Left+Right)div 2 -1,Bottom-1);
                                                 Pen.Color:=FPointerIndicatorActiveColor;Line(Canvas, (Left+Right)div 2 +0,Top+1,(Left+Right)div 2 +0,Bottom-1);
                                                 Pen.Color:=clBtnHighlight;              Line(Canvas, (Left+Right)div 2 +1,Top+1,(Left+Right)div 2 +1,Bottom-1);
                                               end;
                                ioVertical   : begin
                                                 Pen.Color:=clBtnShadow;                 Line(Canvas, Left+1,(Top+Bottom)div 2 -1,Right-1,(Top+Bottom)div 2 -1);
                                                 Pen.Color:=FPointerIndicatorActiveColor;Line(Canvas, Left+1,(Top+Bottom)div 2 +0,Right-1,(Top+Bottom)div 2 +0);
                                                 Pen.Color:=clBtnHighlight;              Line(Canvas, Left+1,(Top+Bottom)div 2 +1,Right-1,(Top+Bottom)div 2 +1);
                                               end;
                              end;
                            end
                          else
                            begin
                              case FOrientation of
                                ioHorizontal : begin
                                                 Pen.Color:=clBtnShadow;                   Line(Canvas, (Left+Right)div 2 -1, Top+1,(Left+Right)div 2 -1,Bottom-1);
                                                 Pen.Color:=FPointerIndicatorInactiveColor;Line(Canvas, (Left+Right)div 2 +0, Top+1,(Left+Right)div 2 +0,Bottom-1);
                                                 Pen.Color:=clBtnHighlight;                Line(Canvas, (Left+Right)div 2 +1, Top+1,(Left+Right)div 2 +1,Bottom-1);
                                               end;
                                ioVertical   : begin
                                                 Pen.Color:=clBtnShadow;                    Line(Canvas, Left+1,(Top+Bottom)div 2 -1,Right-1,(Top+Bottom)div 2 -1);
                                                 Pen.Color:=FPointerIndicatorInactiveColor; Line(Canvas, Left+1,(Top+Bottom)div 2 +0,Right-1,(Top+Bottom)div 2 +0);
                                                 Pen.Color:=clBtnHighlight;                 Line(Canvas, Left+1,(Top+Bottom)div 2 +1,Right-1,(Top+Bottom)div 2 +1);
                                               end;
                              end;
                            end;

                        end;
          ispsPointer : begin
                          Pen.Color   := clBlack;
                          if FMouseDown or FKeyDown then Brush.Color := FPointerHighLightColor else Brush.Color := FPointerColor;

                          case FOrientation of
                            ioHorizontal : case FOrientationLabels of
                                             iosTopLeft     : begin
                                                                Point1 := Point(Left, Bottom);
                                                                Point2 := Point(Left, Top + (Right - Left) div 2);
                                                                Point3 := Point((Right + Left) div 2, Top);
                                                                Point4 := Point(Right, Top + (Right - Left) div 2);
                                                                Point5 := Point(Right, Bottom);
                                                                Polygon([Point1, Point2, Point3, Point4, Point5]);
                                                                Pen.Color := clWhite; PolyLine([Point1, Point2, Point3]);
                                                              end;
                                             iosBottomRight : begin
                                                                Point1 := Point(Left, Top);
                                                                Point2 := Point(Left, Bottom - (Right - Left) div 2);
                                                                Point3 := Point((Right + Left) div 2, Bottom);
                                                                Point4 := Point(Right, Bottom - (Right - Left) div 2);
                                                                Point5 := Point(Right, Top);
                                                                Polygon([Point1, Point2, Point3, Point4, Point5]);
                                                                Pen.Color := clWhite; PolyLine([Point5, Point1, Point2, Point3]);
                                                              end;
                                           end;
                            ioVertical   : case FOrientationLabels of
                                             iosTopLeft     : begin
                                                                Point1 := Point(Right, Top);
                                                                Point2 := Point(Left + (Bottom - Top) div 2, Top);
                                                                Point3 := Point(Left, (Bottom + Top) div 2);
                                                                Point4 := Point(Left + (Bottom - Top) div 2, Bottom);
                                                                Point5 := Point(Right, Bottom);
                                                                Polygon([Point1, Point2, Point3, Point4, Point5]);
                                                                Pen.Color := clWhite; PolyLine([Point1, Point2, Point3]);
                                                              end;
                                             iosBottomRight : begin
                                                                Point1 := Point(Left, Top);
                                                                Point2 := Point(Right - (Bottom - Top) div 2, Top);
                                                                Point3 := Point(Right, (Bottom + Top) div 2);
                                                                Point4 := Point(Right - (Bottom - Top) div 2, Bottom);
                                                                Point5 := Point(Left, Bottom);
                                                                Polygon([Point1, Point2, Point3, Point4, Point5]);
                                                                Pen.Color := clWhite; PolyLine([Point5, Point1, Point2, Point3]);
                                                              end;
                                          end;
                          end;
                        end;
          ispsBitmap  : begin
                          Draw((Left + Right) div 2 - FPointerBitmap.Width div 2, (Top + Bottom) div 2 - FPointerBitmap.Height div 2, FPointerBitmap);
                        end;
        end;
    end;
end;
//*************************************************************************************************************************************
procedure TiSwitchSlider.DrawTicks(Canvas: TCanvas; TrackRect: TRect);
var
  LabelString       : String;
  LabelWidth        : Integer;
  LabelHeight       : Integer;
  x                 : Integer;
  LabelMarginOffset : Integer;
  PositionOffset    : Integer;
  IndicatorRect     : TRect;
  LineIndicatorRect : TRect;
begin
  LabelMarginOffset := PositionLabelMargin;
  if ShowPositionIndicators then LabelMarginOffset := LabelMarginOffset + PositionIndicatorMargin + PositionIndicatorSize;
  with Canvas, TrackRect do
    begin
      for x := 0 to PositionLabelsList.Count-1 do
        begin
          PositionOffset := FTrack3DMargin + (FPointerHeight div 2) + Round(TravelRange /(PositionLabelsList.Count-1) * (x));
          if ShowPositionIndicators then
            begin
              Brush.Style := bsSolid;
              case FOrientation of
                ioVertical   : case FOrientationLabels of
                                 iosBottomRight : IndicatorRect := Rect(Right + PositionIndicatorMargin,                           Bottom - PositionOffset - PositionIndicatorSize,
                                                                        Right + PositionIndicatorMargin + 2*PositionIndicatorSize, Bottom - PositionOffset + PositionIndicatorSize);
                                 iosTopLeft     : IndicatorRect := Rect(Left  - PositionIndicatorMargin - 2*PositionIndicatorSize, Bottom - PositionOffset - PositionIndicatorSize,
                                                                        Left  - PositionIndicatorMargin,                           Bottom - PositionOffset + PositionIndicatorSize);
                               end;
                ioHorizontal : case FOrientationLabels of
                                 iosBottomRight : IndicatorRect := Rect(Left  + PositionOffset - PositionIndicatorSize, Bottom + PositionIndicatorMargin,
                                                                        Left  + PositionOffset + PositionIndicatorSize, Bottom + PositionIndicatorMargin + 2*PositionIndicatorSize);
                                 iosTopLeft     : IndicatorRect := Rect(Left  + PositionOffset - PositionIndicatorSize, Top    - PositionIndicatorMargin - 2*PositionIndicatorSize,
                                                                        Left  + PositionOffset + PositionIndicatorSize, Top    - PositionIndicatorMargin                          );
                               end;
              end;

              case FPositionIndicatorStyle of
                issisDot  : with IndicatorRect do
                              begin
                                Pen.Style   := psClear;
                                Brush.Color := PositionIndicatorColor;
                                Ellipse(Left, Top, Right, Bottom);
                                Pen.Style   := psSolid;
                                case PositionIndicatorBevelStyle of
                                  ibsRaised  : begin
                                                 Pen.Color := clWhite;
                                                 Arc(Left, Top, Right, Bottom, Right, Top, Left, Bottom);
                                                 Pen.Color := clGray;
                                                 Arc(Left, Top, Right, Bottom, Left, Bottom, Right, Top);
                                               end;
                                  ibsLowered : begin
                                                 Pen.Color := clGray;
                                                 Arc(Left, Top, Right, Bottom, Right, Top, Left, Bottom);
                                                 Pen.Color := clWhite;
                                                 Arc(Left, Top, Right, Bottom, Left, Bottom, Right, Top);
                                               end;
                                end;
                             end;
                issisLine : with IndicatorRect do
                              begin
                                Pen.Color := PositionIndicatorColor;
                                case FOrientation of
                                  ioVertical   : LineIndicatorRect := Rect(Left, (Top + Bottom) div 2, Left + PositionIndicatorSize, (Top + Bottom) div 2);
                                  ioHorizontal : LineIndicatorRect := Rect((Left + Right) div 2, Top, (Left + Right) div 2, Top + PositionIndicatorSize);
                                end;
                                case PositionIndicatorBevelStyle of
                                  ibsNone : Line(Canvas, LineIndicatorRect.Left, LineIndicatorRect.Top, LineIndicatorRect.Right, LineIndicatorRect.Bottom);
                                  else      LineBevel(Canvas, LineIndicatorRect.Left, LineIndicatorRect.Top, LineIndicatorRect.Right, LineIndicatorRect.Bottom, PositionIndicatorBevelStyle);
                                end;
                               end;
              end;
            end;
          if ShowPositionLabels then
            begin
              Brush.Style := bsClear;
              if Position <> x then Font.Assign(PositionLabelInactiveFont) else Font.Assign(PositionLabelActiveFont);

              if x <= PositionLabelsList.Count-1 then LabelString := PositionLabelsList.Strings[x] else LabelString := '???';

              LabelWidth  := TextWidth(LabelString);
              LabelHeight := TextHeight(LabelString);

              case FOrientation of
                ioVertical   : case FOrientationLabels of
                                 iosBottomRight : TextOut(Right + LabelMarginOffset,              Bottom - PositionOffset - LabelHeight div 2, LabelString);
                                 iosTopLeft     : TextOut(Left  - LabelMarginOffset - LabelWidth, Bottom - PositionOffset - LabelHeight div 2, LabelString);
                               end;
                ioHorizontal : case FOrientationLabels of
                                 iosBottomRight : TextOut(Left + PositionOffset - LabelWidth div 2, Bottom + LabelMarginOffset, LabelString);
                                 iosTopLeft     : TextOut(Left + PositionOffset - LabelWidth div 2, Top - LabelMarginOffset - LabelHeight, LabelString);
                               end;
              end;

            end;
        end;
    end;
end;
//*************************************************************************************************************************************
end.

⌨️ 快捷键说明

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