亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qiswitchrocker3way.pas

?? Iocomp Ultra Pack v3.0.2 Sources.For.Delphi 數據顯示編程插件,可用于工業控制
?? PAS
字號:
{*******************************************************}
{                                                       }
{       TiSwitchRocker3Way Component                    }
{                                                       }
{       Copyright (c) 1997,2003 Iocomp Software         }
{                                                       }
{*******************************************************}
{$I iInclude.inc}

{$ifdef iVCL}unit  iSwitchRocker3Way;{$endif}
{$ifdef iCLX}unit QiSwitchRocker3Way;{$endif}

interface

uses
  {$I iIncludeUses.inc}
  {$IFDEF iVCL} iTypes,  iGPFunctions,  iCustomComponent;{$ENDIF}
  {$IFDEF iCLX}QiTypes, QiGPFunctions, QiCustomComponent;{$ENDIF}

type
  TiSwitchState = (issDown, issCenter, issUp);

  TiSwitchRocker3Way = class(TiCustomComponent)
  private
    FMouseDown          : Boolean;
    FKeyDown            : Boolean;
    FShowFocusRect      : Boolean;
    FBorderMargin       : Integer;
    FState              : TiSwitchState;
    FOnUpClick          : TNotifyEvent;
    FOnDownClick        : TNotifyEvent;
    FRepeatInitialDelay : Integer;
    FRepeatInterval     : Integer;
    FValue              : Double;
    FIncrement          : Double;
    FUseArrowKeys       : Boolean;
    FUserGenerated      : Boolean;
    FOnValueChange      : TNotifyEvent;
    FOnValueChangeUser  : TNotifyEvent;
  protected
    procedure SetShowFocusRect(const Value: Boolean);
    procedure SetBorderMargin (const Value: Integer);
    procedure SetValue        (const Value: Double);

    procedure iMouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure iMouseUp  (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;

    procedure iWantSpecialKey(var CharCode: Word; var Result: Longint);            override;
    procedure iKeyUp         (var CharCode: Word; Shift: TShiftState);             override;
    procedure iKeyDown       (var CharCode: Word; Shift: TShiftState);             override;

    procedure iDoKillFocus;                                                        override;
    procedure iPaintTo(Canvas: TCanvas);                                           override;
    procedure TimerEvent(Sender : TObject);
    procedure DoUpClick;
    procedure DoDownClick;
    procedure DoValueChange;
  public
    constructor Create(AOwner: TComponent);  override;
    procedure   SetValueNoEvent(const Value: Double);

    property State              : TiSwitchState read FState;
  published
    property ShowFocusRect      : Boolean       read FShowFocusRect      write SetShowFocusRect    default True;
    property BorderMargin       : Integer       read FBorderMargin       write SetBorderMargin     default 2;
    property RepeatInitialDelay : Integer       read FRepeatInitialDelay write FRepeatInitialDelay default 500;
    property RepeatInterval     : Integer       read FRepeatInterval     write FRepeatInterval     default 50;
    property Value              : Double        read FValue              write SetValue;
    property Increment          : Double        read FIncrement          write FIncrement;
    property UseArrowKeys       : Boolean       read FUseArrowKeys       write FUseArrowKeys       default True;
    property OnValueChange      : TNotifyEvent  read FOnValueChange      write FOnValueChange;
    property OnValueChangeUser  : TNotifyEvent  read FOnValueChangeUser  write FOnValueChangeUser;
    property OnUpClick          : TNotifyEvent  read FOnUpClick          write FOnUpClick;
    property OnDownClick        : TNotifyEvent  read FOnDownClick        write FOnDownClick;
    property TabOrder;
    property TabStop          default True;
    property BackGroundColor;
    property Transparent;
    property Width            default 25;
    property Height           default 50;
  end;

implementation
//*************************************************************************************************************************************
constructor TiSwitchRocker3Way.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  Width   := 25;
  Height  := 50;
  TabStop := True;

  FState              := issCenter;
  FRepeatInitialDelay := 500;
  FRepeatInterval     := 50;
  FShowFocusRect      := True;
  FBorderMargin       := 2;
  FIncrement          := 1;
  FUseArrowKeys       := True;

  OnInternalTimer     := TimerEvent;
end;
//*************************************************************************************************************************************
procedure TiSwitchRocker3Way.SetShowFocusRect(const Value:Boolean);begin SetBooleanProperty(Value,FShowFocusRect,irtInvalidate);end;
procedure TiSwitchRocker3Way.SetBorderMargin (const Value:Integer);begin SetIntegerProperty(Value,FBorderMargin, irtInvalidate);end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.SetValueNoEvent(const Value: Double);
var
  TempOnValueChange : TNotifyEvent;
begin
  TempOnValueChange := FOnValueChange;
  FOnValueChange    := nil;
  try
    SetValue(Value);
  finally
    FOnValueChange := TempOnValueChange;
  end;
end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.SetValue(const Value: Double);
var
  CanEdit : Boolean;
begin
  if FValue <> Value then
    begin
      CanEdit := True;
      if Assigned(OnRequestEditProtected) then OnRequestEditProtected(Self, 'Value', CanEdit);
      if CanEdit then
        begin
          FValue := Value;
          InvalidateChange;
          DoValueChange;
          {$ifdef iVCL}OPCOutputData('Value', FValue);{$endif}
        end;
    end;
end;
//*************************************************************************************************************************************
procedure TiSwitchRocker3Way.iMouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    begin
      InvalidateChange;
      SetFocus;
      if Y > (Height div 2) then FState := issDown else FState := issUp;
      FMouseDown := True;
      FKeyDown   := False;
      TimerStart(FRepeatInitialDelay, FRepeatInterval);
      case FState of
        issUp   : DoUpClick;
        issDown : DoDownClick;
      end;
    end;
end;
//*************************************************************************************************************************************
procedure TiSwitchRocker3Way.iMouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if FMouseDown then
    begin
      FMouseDown := False;
      FState     := issCenter;
      InvalidateChange;
    end;

  TimerStop;
end;
//*************************************************************************************************************************************
procedure TiSwitchRocker3Way.iKeyDown(var CharCode: Word; Shift: TShiftState);
begin
  if FUseArrowKeys then
    begin
      //KYLIX TODO
      {$ifndef iCLX}
      if      CharCode = VK_UP   then FState := issUp
      else if CharCode = VK_DOWN then FState := issDown
      else                                    FState := issCenter;
      {$endif}
    end;

  if FState <> issCenter then
    begin
      FKeyDown         := True;
      FMouseDown       := False;
      CharCode := 0;
      TimerStart(FRepeatInitialDelay, FRepeatInterval);
      InvalidateChange;
      case FState of
        issDown : DoDownClick;
        issUp   : DoUpClick;
      end;
    end
  else
    begin
      FKeyDown   := False;
      FMouseDown := False;
      TimerStop;
      InvalidateChange;
    end;

end;
//*************************************************************************************************************************************
procedure TiSwitchRocker3Way.iKeyUp(var CharCode: Word; Shift: TShiftState);
begin
  if FKeyDown then
    begin
      InvalidateChange;
      FKeyDown   := False;
      FMouseDown := False;
      FState     := issCenter;
    end;
  TimerStop;
end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.iWantSpecialKey(var CharCode: Word; var Result: Longint);
begin
  Result := 0;
  if FUseArrowKeys then if CharCode in [VK_DOWN, VK_UP] then Result := 1;
end;
//*************************************************************************************************************************************
procedure TiSwitchRocker3Way.iPaintTo(Canvas: TCanvas);
var
  DrawRect     : TRect;
  ShadowHeight : Integer;
  TotalMargin  : Integer;
begin
  with Canvas, DrawRect do
    begin
      DrawBackGround(Canvas, BackGroundColor);

      DrawRect := Rect(0, 0 ,Width, Height);
      InflateRect(DrawRect, -2, -2);
      Brush.Color := clBlack;
      FillRect(DrawRect);

      ShadowHeight := 3;
      TotalMargin  := BorderMargin + 2;

      case FState of
        issUp     : begin
                      Brush.Color := ChangeColorIntensity(clBtnFace,  $0);
                      DrawRect    := Rect(TotalMargin, TotalMargin ,Width - TotalMargin, Round(Height * 0.50) );
                      FillRect(DrawRect);

                      Brush.Color := ChangeColorIntensity(clBtnFace,  $10);
                      DrawRect    := Rect(TotalMargin, Round(Height * 0.50) ,Width - TotalMargin, Height - TotalMargin - ShadowHeight*2);
                      FillRect(DrawRect);

                      Brush.Color := ChangeColorIntensity(clBtnFace, -$60);
                      DrawRect    := Rect(TotalMargin, Height - TotalMargin - ShadowHeight*2 ,Width - TotalMargin, Height - TotalMargin);
                      FillRect(DrawRect);
                    end;
        issCenter : begin
                      Brush.Color := ChangeColorIntensity(clBtnFace,  $10);
                      DrawRect    := Rect(TotalMargin, TotalMargin ,Width - TotalMargin, TotalMargin + ShadowHeight);
                      FillRect(DrawRect);

                      Brush.Color := ChangeColorIntensity(clBtnFace, -$20);
                      DrawRect    := Rect(TotalMargin, TotalMargin + ShadowHeight ,Width - TotalMargin, Round(Height * 0.50) );
                      FillRect(DrawRect);

                      Brush.Color := ChangeColorIntensity(clBtnFace,  $10);
                      DrawRect    := Rect(TotalMargin, Round(Height * 0.50) ,Width - TotalMargin, Height - TotalMargin - ShadowHeight);
                      FillRect(DrawRect);

                      Brush.Color := clBtnShadow;
                      DrawRect    := Rect(TotalMargin, Height - TotalMargin - ShadowHeight ,Width - TotalMargin, Height - TotalMargin);
                      FillRect(DrawRect);
                    end;
        issDown   : begin
                      Brush.Color := ChangeColorIntensity(clBtnFace,  $10);
                      DrawRect    := Rect(TotalMargin, TotalMargin ,Width - TotalMargin, TotalMargin + ShadowHeight*2);
                      FillRect(DrawRect);

                      Brush.Color := ChangeColorIntensity(clBtnFace, -$20);

                      DrawRect    := Rect(TotalMargin, TotalMargin + ShadowHeight*2 ,Width - TotalMargin, Round(Height * 0.50) );
                      FillRect(DrawRect);

                      Brush.Color := ChangeColorIntensity(clBtnFace,  $0);
                      DrawRect    := Rect(TotalMargin, Round(Height * 0.50) ,Width - TotalMargin, Height - TotalMargin);
                      FillRect(DrawRect);
                    end;
        end;

      if ShowFocusRect and HasFocus then iDrawFocusRect(Canvas, ClientRect, BackGroundColor);
    end;
end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.TimerEvent(Sender: TObject);
begin
  case FState of
    issUp   : DoUpClick;
    issDown : DoDownClick;
  end;
end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.DoUpClick;
begin
  FUserGenerated := True;
  try
    Value := Value + FIncrement;
  finally
    FUserGenerated := False;
  end;
  if Assigned(FOnUpClick) then FOnUpClick(Self);
end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.DoDownClick;
begin
  FUserGenerated := True;
  try
    Value := Value - FIncrement;
  finally
    FUserGenerated := False;
  end;
  if Assigned(FOnDownClick) then FOnDownClick(Self);
end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.iDoKillFocus;
begin
  FMouseDown := False;
  FKeyDown   := False;
  FState     := issCenter;
  TimerStop;
  inherited;
end;
//****************************************************************************************************************************************************
procedure TiSwitchRocker3Way.DoValueChange;
begin
  if not Loading then
    begin
      if                        Assigned(OnChangeProtected)  then OnChangeProtected(Self, 'Value');
      if                        Assigned(FOnValueChange)     then FOnValueChange(Self);
      if FUserGenerated then if Assigned(FOnValueChangeUser) then FOnValueChangeUser(Self);
    end;
end;
//****************************************************************************************************************************************************
end.


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡视频在线观看| 国产色一区二区| 久久久久久久av麻豆果冻| 国产精品久久夜| 奇米一区二区三区av| 99在线热播精品免费| 欧美一区二区视频在线观看2022| 国产精品污网站| 免费精品视频最新在线| 91蜜桃免费观看视频| 2021国产精品久久精品| 亚洲国产日韩av| 成人av动漫在线| 久久丝袜美腿综合| 蜜臀av一区二区在线免费观看 | 亚洲国产另类av| 国产成人在线视频网址| 日韩一区二区免费电影| 亚洲精品国产a| 91免费看片在线观看| 久久精品一级爱片| 韩国理伦片一区二区三区在线播放 | 成人综合婷婷国产精品久久| 欧美一区二区三区日韩| 亚洲一区二区在线免费观看视频 | 欧美亚洲国产一区二区三区 | 亚洲一区二区影院| 色哟哟精品一区| 中文字幕在线观看一区二区| 国产福利一区二区三区视频| 欧美mv日韩mv| 蜜桃精品视频在线观看| 91精品国产色综合久久不卡蜜臀 | 久久精品视频一区| 国产一区二区在线影院| 精品国产网站在线观看| 久久国产精品无码网站| 精品国产sm最大网站| 麻豆成人久久精品二区三区小说| 91精品麻豆日日躁夜夜躁| 天堂精品中文字幕在线| 69精品人人人人| 蜜桃一区二区三区四区| 欧美变态tickling挠脚心| 国产在线视频一区二区| 国产农村妇女毛片精品久久麻豆 | 久久久久青草大香线综合精品| 青青草97国产精品免费观看 | 国产精品视频一区二区三区不卡| 丰满白嫩尤物一区二区| ●精品国产综合乱码久久久久 | 一区二区视频在线| 欧美三级视频在线播放| 亚洲超碰精品一区二区| 日韩欧美电影一区| 成人免费av在线| 一区二区三区欧美日| 欧美一区二区播放| 成人理论电影网| 亚洲宅男天堂在线观看无病毒| 88在线观看91蜜桃国自产| 精久久久久久久久久久| 一区二区中文字幕在线| 欧美撒尿777hd撒尿| 激情文学综合插| 亚洲美女少妇撒尿| 欧美大片拔萝卜| av综合在线播放| 日韩中文欧美在线| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲午夜久久久久久久久久久| 91精品国产麻豆| youjizz国产精品| 无吗不卡中文字幕| 国产精品久久毛片av大全日韩| 欧美性猛交xxxxxxxx| 国产一区二区三区免费| 亚洲综合自拍偷拍| 国产婷婷一区二区| 欧美高清视频www夜色资源网| 国产成人免费9x9x人网站视频| 亚洲成人av免费| 亚洲国产成人午夜在线一区| 88在线观看91蜜桃国自产| 9久草视频在线视频精品| 日本成人超碰在线观看| 最好看的中文字幕久久| 精品国产一区二区精华| 欧美三级电影网| 91在线视频在线| 国产一区二区三区av电影| 亚洲国产视频网站| 伊人色综合久久天天人手人婷| 国产欧美在线观看一区| 日韩欧美中文字幕公布| 在线观看日韩毛片| 色综合久久66| 成人激情校园春色| 国产精品系列在线播放| 紧缚捆绑精品一区二区| 日韩高清在线观看| 午夜视频在线观看一区二区三区| 亚洲免费伊人电影| 国产精品久久久久久久久免费樱桃| 欧美电影免费观看高清完整版在 | 3atv在线一区二区三区| 欧美写真视频网站| 日本道色综合久久| 99久久99久久免费精品蜜臀| 粗大黑人巨茎大战欧美成人| 国产麻豆成人精品| 国产精品一区在线观看你懂的| 久久精品国产秦先生| 麻豆成人久久精品二区三区红 | 国产美女av一区二区三区| 老司机午夜精品99久久| 男女男精品网站| 麻豆国产精品官网| 狠狠色丁香婷婷综合久久片| 久久国产欧美日韩精品| 精品系列免费在线观看| 国产一区二区三区在线观看精品| 国产一区二区免费视频| 国产精品18久久久久久久网站| 国产激情一区二区三区四区 | 欧美午夜精品久久久久久孕妇| 91亚洲午夜精品久久久久久| 色哟哟亚洲精品| 欧美视频中文字幕| 欧美一区二区视频网站| 91精品国产日韩91久久久久久| 精品少妇一区二区三区在线播放| 欧美成人一区二区三区| 久久久久久久网| 国产精品久久久久久久久免费桃花 | jiyouzz国产精品久久| 一本大道av伊人久久综合| 欧美性色黄大片手机版| 日韩视频在线你懂得| 一级做a爱片久久| 午夜亚洲国产au精品一区二区| 日本美女视频一区二区| 国产精品一区免费视频| eeuss国产一区二区三区| 91九色02白丝porn| 日韩欧美一级片| 中文字幕一区二区三区色视频| 亚洲乱码一区二区三区在线观看| 亚洲高清中文字幕| 国产福利一区在线| 欧美制服丝袜第一页| 精品伦理精品一区| 亚洲免费视频成人| 久久99国产精品久久99果冻传媒| 国产福利一区二区三区视频在线 | 日韩欧美视频一区| 中文字幕一区二区三区乱码在线| 亚洲超碰精品一区二区| 国产成人丝袜美腿| 欧洲精品中文字幕| 国产午夜精品福利| 三级在线观看一区二区 | 亚洲精品美腿丝袜| 久久国产欧美日韩精品| 色综合婷婷久久| 精品国产91洋老外米糕| 亚洲尤物在线视频观看| 国产精品系列在线播放| 91精品福利在线一区二区三区 | 亚洲第一综合色| 国产黄人亚洲片| 欧美精品18+| 日韩理论电影院| 精品系列免费在线观看| 欧美理论电影在线| 亚洲人123区| 国产suv精品一区二区6| 日韩精品综合一本久道在线视频| 亚洲免费观看高清完整版在线| 精品影院一区二区久久久| 欧美日韩国产一级二级| 国产精品电影院| 国产精品亚洲成人| 精品伦理精品一区| 免费三级欧美电影| 91精品国产一区二区三区| 亚洲一区自拍偷拍| 色综合久久中文字幕| 国产精品色哟哟网站| 高清在线不卡av| 久久久久久久久久久电影| 黄色日韩三级电影| 精品欧美一区二区在线观看| 亚洲va韩国va欧美va精品| 精品污污网站免费看| 一区二区三区欧美在线观看| 在线免费一区三区| 一区二区高清在线| 欧美午夜一区二区三区| 亚洲午夜精品网|