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

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

?? qiintegeroutput.pas

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

{$ifdef iVCL}unit  iIntegerOutput;{$endif}
{$ifdef iCLX}unit QiIntegerOutput;{$endif}

interface

uses
  {$I iIncludeUses.inc}
  {$IFDEF iVCL} iComponent,  iEditCustom,  iTypes, iGPFunctions; {$ENDIF}
  {$IFDEF iCLX}QiComponent, QiEditCustom, QiTypes, QiGPFunctions;{$ENDIF}

type
  TiIntegerOutput = class(TiEditCustom)
  private
    FValue              : Integer;
    FOnBeforeChange     : TOnBeforeChangeInteger;
    FOnChangeUser       : TNotifyEvent;
    FOnBeforeUserChange : TOnBeforeChangeInteger;
    FBeepOnError        : Boolean;
    FUndoOnError        : Boolean;
    FFormatStyle        : TiIntegerFormatStyle;
    FLeadingZeros       : Boolean;
    FValueMax           : Integer;
    FValueMin           : Integer;
  protected
    procedure SetValue       (const Value: Integer);
    procedure SetValueMax    (const Value: Integer);
    procedure SetValueMin    (const Value: Integer);
    procedure SetFormatStyle (const Value: TiIntegerFormatStyle);
    procedure SetLeadingZeros(const Value: Boolean);

    function  GetValue(Value: String): Integer;
    function  iGetText (Value: Integer): String;

    procedure UpdateText;
    procedure DoChange;                            override;
    procedure CompleteChange;                      override;
    function  AllowKey(Key: Char): Boolean;        override;
    procedure SetMaxLength(const Value: Integer);  override;
  public
    constructor Create(AOwner: TComponent);        override;

    procedure   SetValueNoEvent(const Value : Integer);

    {$ifdef iVCL}
    procedure OPCItemActivateSend(Index:Integer);
    {$endif}

    property Text;
  published
    property Value              : Integer                read FValue              write SetValue;
    property ValueMax           : Integer                read FValueMax           write SetValueMax;
    property ValueMin           : Integer                read FValueMin           write SetValueMin;
    property OnChangeUser       : TNotifyEvent           read FOnChangeUser       write FOnChangeUser;
    property OnBeforeChange     : TOnBeforeChangeInteger read FOnBeforeChange     write FOnBeforeChange;
    property OnBeforeUserChange : TOnBeforeChangeInteger read FOnBeforeUserChange write FOnBeforeUserChange;

    property UndoOnError        : Boolean                read FUndoOnError        write FUndoOnError    default True;
    property BeepOnError        : Boolean                read FBeepOnError        write FBeepOnError    default False;

    property FormatStyle        : TiIntegerFormatStyle   read FFormatStyle        write SetFormatStyle;
    property LeadingZeros       : Boolean                read FLeadingZeros       write SetLeadingZeros;

    property Alignment    default taCenter;

    property TabOrder;
    property TabStop      default True;

    property ErrorActive;
    property ErrorText;
    property ErrorFont;
    property ErrorBackGroundColor;
  end;

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

  Alignment    := taCenter;
  Font.Style   := [fsBold];

  FUndoOnError := True;
  Text         := '0';
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.DoChange;
begin
  if not(csLoading in ComponentState) then
    begin
      if                        Assigned(OnChangeProtected)  then OnChangeProtected(Self, 'Value');
      if                        Assigned(OnChange)           then OnChange          (Self);
      if UserGenerated then  if Assigned(FOnChangeUser)      then FOnChangeUser     (Self);
    end;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.SetLeadingZeros(const Value: Boolean);
begin
  if FLeadingZeros <> Value then
    begin
      FLeadingZeros := Value;
      UpdateText;
      InvalidateChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.SetFormatStyle(const Value: TiIntegerFormatStyle);
begin
  if FFormatStyle <> Value then
    begin
      FFormatStyle := Value;
      UpdateText;
      InvalidateChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.SetMaxLength(const Value: Integer);
begin
  inherited;
  UpdateText;
  InvalidateChange;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.SetValueMax(const Value: Integer);
begin
  if FValueMax <> Value then
    begin
      FValueMax  := Value;
      Self.Value := FValue;
    end;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.SetValueMin(const Value: Integer);
begin
  if FValueMin <> Value then
    begin
      FValueMin  := Value;
      Self.Value := FValue;
    end;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.SetValue(const Value: Integer);
var
  TempValue : Integer;
  CanChange : Boolean;
begin
  TempValue := Value;

  if not ((FValueMax = 0) and (FValueMin = 0)) and not Loading then
    begin
      if TempValue > FValueMax then TempValue := FValueMax;
      if TempValue < FValueMin then TempValue := FValueMin;
    end;

  if FValue <> TempValue then
    begin
      CanChange := True;
      if UserGenerated then if Assigned(FOnBeforeUserChange) then FOnBeforeUserChange(Self, FValue, TempValue, CanChange);
                            if Assigned(FOnBeforeChange)     then FOnBeforeChange    (Self, FValue, TempValue, CanChange);
      if CanChange then
        begin
          if Assigned(OnRequestEditProtected) then OnRequestEditProtected(Self, 'Value', CanChange);
          if CanChange then
            begin
              {$ifdef iVCL}if not OPCOutputData('Value', TempValue) then {$ENDIF}
              begin
                FValue := TempValue;
                UndoText := iGetText(FValue);
                UpdateText;
                DoChange;
              end;
            end;
        end;
      UpdateText;
    end
  else UpdateText;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.SetValueNoEvent(const Value: Integer);
var
  TempOnValueChange : TNotifyEvent;
begin
  TempOnValueChange := OnChange;
  OnChange:= nil;
  try
    SetValue(Value);
  finally
    OnChange := TempOnValueChange;
  end;
end;
//****************************************************************************************************************************************************
function TiIntegerOutput.AllowKey(Key: Char): Boolean;
var
  BadKey : Boolean;
begin
  Result := True;

  BadKey := True;
  case FormatStyle of
    iifsInteger : if Key in ['0'..'9']                     then BadKey := False;
    iifsHex     : if Key in ['0'..'9', 'a'..'f', 'A'..'F'] then BadKey := False;
    iifsBinary  : if Key in ['0'..'1']                     then BadKey := False;
    iifsOctal   : if Key in ['0'..'7']                     then BadKey := False;
  end;

  if BadKey then
    begin
      if FBeepOnError then Beep;
      Result := False;
    end;
end;
//****************************************************************************************************************************************************
procedure TiIntegerOutput.UpdateText;
begin
  Text := iGetText(FValue);
end;
//****************************************************************************************************************************************************
function TiIntegerOutput.GetValue(Value: String): Integer;
begin
  Result := 0;
  try
    case FFormatStyle of
      iifsInteger : Result := iStrToInt(      Value);
      iifsHex     : Result := iStrToInt('$' + Value);
      iifsBinary  : Result := iStrToInt('b' + Value);
      iifsOctal   : Result := iStrToInt('o' + Value);
    end;
  except
    on e : exception do
      begin
        if FUndoOnError then
          begin
            Undo;
            Result := FValue;
            if FBeepOnError then Beep;
          end
        else raise;
      end;
  end;
end;
//****************************************************************************************************************************************************
function TiIntegerOutput.iGetText(Value: Integer): String;
var
  TempMaxLength : Integer;
begin
  TempMaxLength := MaxLength;
  case FFormatStyle of
    iifsInteger : begin
                    Result := iIntToStr(Value, iifsInteger, TempMaxLength, FLeadingZeros);
                  end;
    iifsHex     : begin
                    if TempMaxLength > 8 then TempMaxLength := 8;
                    if TempMaxLength = 0 then TempMaxLength := 8;
                    Result := iIntToStr(Value, iifsHex,     TempMaxLength, FLeadingZeros);
                  end;
    iifsBinary  : begin
                    if TempMaxLength > 32 then TempMaxLength := 32;
                    if TempMaxLength = 0  then TempMaxLength := 32;
                    Result := iIntToStr(Value, iifsBinary,  TempMaxLength, FLeadingZeros);
                  end;
    iifsOctal   : begin
                    if TempMaxLength > 10 then TempMaxLength := 10;
                    if TempMaxLength = 0  then TempMaxLength := 10;
                    Result := iIntToStr(Value, iifsOctal,   TempMaxLength, FLeadingZeros);
                  end;
  end;
end;
//****************************************************************************************************************************************************
{$ifdef iVCL}
procedure TiIntegerOutput.OPCItemActivateSend(Index: Integer);
var
  OldValue : Double;
begin
  OldValue := Value;
  OPCItemActivate(Index);
  OPCItem[Index].Data := OldValue;
end;
{$endif}
//****************************************************************************************************************************************************
procedure TiIntegerOutput.CompleteChange;
begin
  if Text <> UndoText then
    begin
      Value := GetValue(Text);
      UndoText := iGetText(FValue);
      SelectAll;
    end
  else SelectAll;
end;
//****************************************************************************************************************************************************
end.


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影网1区2区| 色综合久久88色综合天天| 国产成人av电影免费在线观看| 91小宝寻花一区二区三区| 欧美一级在线观看| 中文字幕一区二区三区色视频| 久久精品国产亚洲a| 色屁屁一区二区| 国产精品福利电影一区二区三区四区 | 国产丝袜欧美中文另类| 亚洲一区二区三区四区在线| 国产ts人妖一区二区| 欧美一区二区视频在线观看2022 | 久久久影院官网| 香蕉av福利精品导航| 99vv1com这只有精品| 久久久久久久久久电影| 日韩不卡一二三区| 欧美剧在线免费观看网站| 一区二区三区中文字幕精品精品 | 国产精品一区二区你懂的| 日韩一区二区三免费高清| 亚洲高清免费在线| 色婷婷精品大在线视频| 亚洲欧洲国产专区| 成人av免费网站| 亚洲欧洲国产日韩| 成人小视频在线| 国产精品久久久久影院色老大| 国产精品 欧美精品| 国产蜜臀av在线一区二区三区| 国产高清视频一区| 欧美激情中文不卡| 成人午夜精品在线| 中文字幕综合网| 在线中文字幕一区二区| 亚洲永久精品大片| 欧美乱熟臀69xxxxxx| 男人的天堂亚洲一区| 日韩美女一区二区三区四区| 精品一区二区三区不卡| 久久久久久久综合日本| 成人久久视频在线观看| 一区二区三区免费看视频| 欧美视频一区二区在线观看| 午夜日韩在线观看| 欧美一级一级性生活免费录像| 偷窥少妇高潮呻吟av久久免费| 日韩亚洲欧美一区二区三区| 国产一区二区91| 国产精品电影院| 欧美日高清视频| 国产一区欧美一区| 亚洲丝袜精品丝袜在线| 欧美日韩国产高清一区二区| 久久电影网站中文字幕| 欧美国产在线观看| 欧美日韩mp4| 风间由美性色一区二区三区| 一区二区三区中文在线| 日韩视频在线你懂得| 成人免费视频app| 国产日本欧洲亚洲| 成人性生交大片免费看视频在线| 国产一区二区三区免费播放| 国产成人av一区二区三区在线| 欧美影院午夜播放| 久久综合久久鬼色中文字| 欧美人与禽zozo性伦| 欧美精品一区二区三区很污很色的| 亚洲成a人片在线观看中文| 欧洲一区二区三区免费视频| 天堂蜜桃一区二区三区 | 国产精品影音先锋| 中文字幕一区二区三区视频| 在线播放日韩导航| 成人午夜在线视频| 三级欧美在线一区| 亚洲欧美激情小说另类| 欧美哺乳videos| 91电影在线观看| 国产真实乱偷精品视频免| 亚洲精品视频免费看| 26uuu国产一区二区三区| 色老汉av一区二区三区| 极品美女销魂一区二区三区 | 激情伊人五月天久久综合| 亚洲精品视频免费看| 国产午夜精品福利| 777色狠狠一区二区三区| 成人福利视频在线| 激情综合一区二区三区| 一二三区精品福利视频| 国产欧美精品在线观看| 日韩欧美一区二区视频| 欧美日韩一本到| 欧洲色大大久久| 91欧美激情一区二区三区成人| 国产一二三精品| 久久99九九99精品| 日韩电影在线一区| 午夜欧美大尺度福利影院在线看| 亚洲人成电影网站色mp4| 国产精品日产欧美久久久久| 国产欧美日韩精品一区| 国产亚洲精品精华液| 久久亚洲欧美国产精品乐播| 精品粉嫩超白一线天av| 欧美一级精品大片| 日韩欧美不卡一区| 日韩区在线观看| 日韩午夜在线观看| 日韩欧美久久久| 精品久久久久久久久久久久久久久 | 精品女同一区二区| 精品国精品国产尤物美女| 欧美一级日韩不卡播放免费| 91精品国产一区二区三区香蕉 | 欧美aaaaa成人免费观看视频| 午夜不卡av在线| 蜜芽一区二区三区| 国产一区在线观看视频| 国产精品一区二区免费不卡| 成人免费av在线| 欧美性高清videossexo| 欧美久久一区二区| 欧美mv和日韩mv国产网站| 精品卡一卡二卡三卡四在线| 国产网红主播福利一区二区| 国产精品乱码久久久久久| 日韩毛片精品高清免费| 午夜久久久影院| 精品综合久久久久久8888| 国产精品亚洲视频| 日本精品一区二区三区高清 | 中文字幕av免费专区久久| 日韩美女视频19| 日产欧产美韩系列久久99| 狠狠v欧美v日韩v亚洲ⅴ| 成人av免费在线播放| 欧美系列亚洲系列| 精品国产伦一区二区三区观看体验| 久久欧美中文字幕| 亚洲女同ⅹxx女同tv| 青娱乐精品视频| aa级大片欧美| 欧美日韩免费高清一区色橹橹 | 国产99久久久精品| 欧美性生活一区| 久久久久久久久99精品| 中文字幕在线不卡一区| 婷婷久久综合九色综合绿巨人| 久久99国产精品免费网站| 成人动漫在线一区| 欧美一区欧美二区| 亚洲人精品一区| 国产一区在线不卡| 欧美羞羞免费网站| 久久精品夜色噜噜亚洲a∨| 亚洲麻豆国产自偷在线| 精品在线免费观看| 色女孩综合影院| 久久先锋影音av| 爽好久久久欧美精品| av亚洲产国偷v产偷v自拍| 51精品秘密在线观看| 国产欧美精品一区aⅴ影院| 丝袜美腿亚洲综合| 色综合天天天天做夜夜夜夜做| 日韩视频免费观看高清在线视频| 亚洲色欲色欲www| 国产精品白丝jk黑袜喷水| 69成人精品免费视频| 国产精品毛片无遮挡高清| 美女精品自拍一二三四| 欧美三电影在线| 中文字幕在线一区免费| 91视频在线观看免费| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美丰满高潮xxxx喷水动漫| 17c精品麻豆一区二区免费| 精东粉嫩av免费一区二区三区| 欧美一区二区三区四区在线观看| 亚洲人亚洲人成电影网站色| 国产91色综合久久免费分享| 精品成人一区二区| 日韩精品一级中文字幕精品视频免费观看 | 国产成人综合自拍| 69久久99精品久久久久婷婷| 亚洲中国最大av网站| 99精品久久免费看蜜臀剧情介绍| 精品国产一区二区精华| 美女视频黄久久| 欧美一区二区私人影院日本| 日韩电影免费在线看| 欧美日韩精品专区| 午夜欧美电影在线观看| 欧美日韩国产综合一区二区三区| 亚洲自拍偷拍九九九| 欧美视频中文一区二区三区在线观看|