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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? abnumedit.pas

?? 著名的虛擬儀表控件,包含全部源碼, 可以在,delphi2007 下安裝運(yùn)行
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit AbNumEdit;

{$I abks.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, _AbProc, extctrls, _GClass, _AbInfo;

type

  TEditBase = (ebBin, ebHex, ebFloat, ebInt);

  TNumEditOption = (eoLimitMax, eoLimitMin, eoMultiply );
  TNumEditOptions = set of TNumEditOption;

  TBaseProperties = record
    ValidChars : String;   // String with valid chars
    ExpEnable : Boolean;   // if true exponent Char is enabled
    MultiEnable : Boolean; // if true multiplicator Char is enabled
    Sign       : String;   // String with valid sign's (at pos 1)
    MinValue   : Extended; // lowest allowed value
    MaxValue   : Extended; // highest allowed value
  end;

  TNumEditState = (esNormal, esEditing, esError);

  TAbNumEdit = class(TCustomEdit)
  private
    FAbInfo: TAbInfo;
    FEditBase : TEditBase;
    FEditorEnabled: Boolean;
    FMinValue: Double;
    FMaxValue: Double;
    FIncrement: Single;
    FOldText : String;
    FValue : Double;
    FValueAsBool : String;
    FValueAsHex  : String;
    FValueAsSingle : Single;
    FValueAsInt : Integer;
    FOptions : TNumEditOptions;
    FFormatStr : String;
    FOnValueChanged: TNotifyEvent;
    FState : TNumEditState;

    FirstDraw  : Boolean;
    IgnoreChange : Boolean;

    FLimitUp : Boolean;
    FLimitLo : Boolean;
    FOnLimit : TNotifyEvent;

    FColorDefault  : TColor;
    FColorError    : TColor;
    FColorEditing  : TColor;

    FDigitsBool : Integer;
    FDigitsHex : Integer;

    procedure SetColorDefault(Value : TColor);
    procedure SetFormatStr(Value : String);
    procedure SetLimitUp(Value : Boolean);
    procedure SetLimitLo(Value : Boolean);
    procedure SetMaxValue(Value : Double);
    procedure SetMinValue(Value : Double);

    procedure SetText(ExtValue : Extended);

    procedure SetOptions(Value : TNumEditOptions);
    procedure SetValueAsBool(Value: String);
    procedure SetValueAsHex(Value: String);
    procedure SetValueAsInt(Value: Integer);
    procedure SetValueAsSingle(Value: Single);
    procedure SetValue (Value: Double);

    function CheckValue (Value: Double): Double;
    procedure SetEditBase(Value : TEditBase);
    procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
    procedure CMExit(var Message: TCMExit);   message CM_EXIT;
    procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED;
  protected
    procedure SetState (Value : TNumEditState); virtual;
    procedure Limit;  virtual;
    property OldText : String read FOldText write FOldText;
    function CheckEdit(WriteEnable : Boolean): Boolean;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyPress(var Key: Char); override;
    procedure CreateParams(var Params: TCreateParams); override;
    procedure Change; override;
    procedure Loaded; override;
  public
    procedure UpClick (Sender: TObject); virtual;
    procedure DownClick (Sender: TObject); virtual;
    property LimitUp : Boolean read FLimitUp write SetLimitUp stored False;
    property LimitLo : Boolean read FLimitLo write SetLimitLo stored False;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property AbInfo: TAbInfo read FAbInfo write FAbInfo stored false;
    {$IFDEF CEnabled}
      property Anchors;
      property Constraints;
    {$ENDIF}
    property AutoSelect;
    property AutoSize;
    property ColorDefault : TColor read FColorDefault write SetColorDefault;
    property ColorError : TColor read FColorError write FColorError default clRed;
    property ColorEditing : TColor read FColorEditing write FColorEditing default clLime;

    property Ctl3D;
    property DragCursor;
    property DragMode;

    property DigitsBool : Integer read FDigitsBool write FDigitsBool;
    property DigitsHex  : Integer read FDigitsHex write FDigitsHex;

    property EditorEnabled: Boolean read FEditorEnabled write FEditorEnabled default True;
    property EditBase : TEditBase read FEditBase write SetEditBase default ebFloat;
    property Enabled;
    property Font;
    property FormatStr : String read fFormatStr write SetFormatStr;
    property Increment: Single read FIncrement write FIncrement;
    property MaxLength;
    property MaxValue: Double read FMaxValue write SetMaxValue;
    property MinValue: Double read FMinValue write SetMinValue;
    property OnLimit : TNotifyEvent read FOnLimit write FOnLimit;
    property OnValueChanged: TNotifyEvent read FOnValueChanged write FOnValueChanged;
    property Options : TNumEditOptions read FOptions write SetOptions;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ReadOnly;
    property ShowHint;
    property State : TNumEditState read FState;
    property TabOrder;
    property TabStop;
    property Text;
    property Value: Double read FValue write SetValue  stored False;
    property ValueAsBool: String read FValueAsBool write SetValueAsBool  stored False;
    property ValueAsHex: String read FValueAsHex write SetValueAsHex  stored False;
    property ValueAsSingle: Single read FValueAsSingle write SetValueAsSingle  stored False;
    property ValueAsInt: Integer read FValueAsInt write SetValueAsInt stored False;
    property Visible;
    property OnChange;
    property OnClick;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDrag;
  end;

  TAbNumSpin = class(TAbNumEdit)
  private
    FButton: TAbSpinButton;

    procedure SetInterval(Value : Integer);
    function GetInterval: Integer;
    procedure SetStartDelay(Value : Integer);
    function GetStartDelay: Integer;

    procedure SetEditRect;
    function GetMinHeight: Integer;
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
  protected
    procedure CreateWnd; override;
    procedure Limit; Override;
    procedure SetEnabled(Value: Boolean); {$IFDEF CEnabled} override; {$ENDIF}
    procedure SetState (Value : TNumEditState); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Interval    : Integer read GetInterval write SetInterval;
    property StartDelay    : Integer read GetStartDelay write SetStartDelay;
  end;




var
  EBase : Array[0..Ord(ebInt)] of TBaseProperties;

const
  ValidFirstChar : String = '$%&!';    // e.g.: to input HexNumber even if another
                                      // EditBase is selected
  ExpChars : String = 'Ee';
  Factors : Array[0..11] of Single = (1e18,1e15,1e12,1e9,1e6,1e3,1e-3,1e-6,1e-9,1e-12,1e-15,1e-18);
  ValidMultipChars : String = 'EPTGMkmunpfa';

{  Multiplicator Chars
  *factor               Sign
  1e18          Exa     E
  1e15          Peta    P
  1e12          Tera    T
  1e9           Giga    G
  1e6           Mega    M
  1e3           Kilo    k
  1e-3          milli   m
  1e-6          Micro   u
  1e-9          nano    n
  1e-12         pico    p
  1e-15         femto   f
  1e-18         atto    a
 }


implementation
{ TAbSpinButton }


//==============================================================================


{ TAbNumEdit }

constructor TAbNumEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
 // if (AOwner is TWinControl) then Parent := AOwner as TWinControl;
  FirstDraw := true;
  AbInfo := LoadAbakusInfo;
  width := 65;
  FEditBase := ebFloat;
  FDigitsBool :=0;
  FDigitsHex := 0;
  FFormatStr := '#0.#';

  Text := '0';
  FOldText := '';
  ControlStyle := ControlStyle - [csSetCaption];
  FColorDefault := clWindow;
  FColorError := clRed;
  FColorEditing := clLime;
  FIncrement := 1.0;
  FEditorEnabled := True;
  IgnoreChange := true;
end;

procedure TAbNumEdit.Loaded;
begin
  inherited Loaded;
end;

destructor TAbNumEdit.Destroy;
begin
  inherited Destroy;
end;

procedure TAbNumEdit.SetColorDefault(Value : TColor);
begin
  FColorDefault := Value;
  Color := Value;
end;

procedure TAbNumEdit.SetMaxValue(Value : Double);
begin
  if FMaxValue <> Value then begin
    FMaxValue := Value;
    if (FValue > Value) and (eoLimitMax in Options) then Self.Value := Value;
  end;
end;

procedure TAbNumEdit.SetMinValue(Value : Double);
begin
  if FMinValue <> Value then begin
    FMinValue := Value;
    if (FValue < Value) and (eoLimitMin in Options) then Self.Value := Value;
  end;
end;

procedure TAbNumEdit.SetFormatStr(Value : String);
begin
  if FFormatStr <> Value then begin
    FFormatStr := Value;
    if EditBase = ebFloat then
      Text := FormatFloat(fFormatStr,FValue);
    CheckEdit(True);
  end;
end;

procedure TAbNumEdit.SetLimitUp(Value : Boolean);
begin
  if FLimitUp <> Value then begin
    FLimitUp := Value;
    Limit;
  end;
end;

procedure TAbNumEdit.SetLimitLo(Value : Boolean);
begin
  if FLimitLo <> Value then begin
    FLimitLo := Value;
    Limit;
  end;
end;

procedure TAbNumEdit.Limit;
begin
  if Assigned(FOnLimit) then FOnLimit(self);
end;


procedure TAbNumEdit.SetOptions(Value : TNumEditOptions);
begin
  if fOptions <> Value then begin
    fOptions := Value;
    CheckEdit(true);
  end;
end;

procedure TAbNumEdit.Change;
var
  bin : Boolean;
begin
  if IgnoreChange then IgnoreChange := false
  else begin
    bin :=  (fValueAsBool = '');
    if (csDesigning in ComponentState) then CheckEdit(true)
    else CheckEdit(bin);
  end;
end;


procedure TAbNumEdit.SetEditBase(Value : TEditBase);
begin
  if fEditBase <> Value then begin
    fEditBase := Value;
    case fEditBase of
      ebBin : begin
                Text := FValueAsBool;
              end;
      ebHex : begin
                Text := FValueAsHex;
              end;
      ebFloat : begin
                Text := FormatFloat(fFormatStr,FValue);
              end;
      ebInt : begin
                Text := IntToStr(FValueAsInt);
              end;
    end;
    OldText := Text;
    SetState(esNormal);
  end;

end;

procedure TAbNumEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_UP) and not FLimitUp then UpClick (Self)
  else if (Key = VK_DOWN) and not FLimitLo then DownClick (Self)
  else begin
    if (State <> esNormal) and (Key = VK_ESCAPE) then
      case EditBase of
        ebBin : begin
                  Text := FValueAsBool;
                end;
        ebHex : begin
                  Text := FValueAsHex;
                end;
        ebFloat : begin
                  Text := FormatFloat(fFormatStr,FValue);
                end;
        ebInt : begin
                  Text := IntToStr(FValueAsInt);
                end;
      end;
    if Assigned(OnChange) then OnChange(Self);
  end;

  inherited KeyDown(Key, Shift);
end;

procedure TAbNumEdit.KeyPress(var Key: Char);
begin
  if FEditorEnabled then begin
    if Key = Chr(VK_RETURN) then  begin
      Key := #0;
      if Text = '' then Text := '0';
      CheckEdit(true);
    end;
    inherited KeyPress(Key);
  end else begin
    Key := #0;
    Beep;
  end;
end;


procedure TAbNumEdit.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or ES_MULTILINE or WS_CLIPCHILDREN;
  CheckEdit(true);
end;

procedure TAbNumEdit.UpClick (Sender: TObject);
begin
  if ReadOnly or LimitUp then begin
    Beep;
  end else begin
    IgnoreChange := true;
    if ((eoMultiply in Options) and (EditBase = ebFloat)) and
       (FIncrement <> 0) and (FValue <> 0) then
      Value := CheckValue(FValue * FIncrement)
    else
      Value := CheckValue(FValue + FIncrement);
    if Assigned(OnChange) then OnChange(Self);
  end;
end;

procedure TAbNumEdit.DownClick (Sender: TObject);
begin
  if ReadOnly or LimitLo then begin
    Beep;
  end else begin
    IgnoreChange := true;
    if ((eoMultiply in Options) and (EditBase = ebFloat)) and
       (FIncrement <> 0) and (FValue <> 0) then
      Value := CheckValue(FValue / FIncrement)
    else
      Value := CheckValue(FValue - FIncrement);
    if Assigned(OnChange) then OnChange(Self);
  end;
end;

procedure TAbNumEdit.CMExit(var Message: TCMExit);
begin
  inherited;
  if Text = '' then Text := '0';
  CheckEdit(True);
end;

procedure TAbNumEdit.CMParentColorChanged(var Message: TMessage); 
begin
  inherited;
  if ParentColor then FColorDefault := Color;
end;

procedure TAbNumEdit.SetValue (Value: Double);
begin
  if Value = FValue then exit;
  SetText(CheckValue(Value));
end;

procedure TAbNumEdit.SetValueAsBool(Value: String);
begin
  if Value = Text then exit;
  if EditBase = ebBin then
    Text := Value
  else
    Text := '&' + Value;
  CheckEdit(True);
end;

procedure TAbNumEdit.SetValueAsHex(Value: String);
begin
  if Value = Text then exit;
  if EditBase = ebHex then
    Text := Value
  else
    Text := '$' + Value;
  CheckEdit(True);
end;

procedure TAbNumEdit.SetValueAsInt(Value: Integer);
begin
  if IntToStr(Value) = Text then exit;
  SetText(Value);
end;

procedure TAbNumEdit.SetValueAsSingle(Value: Single);
begin

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
69精品人人人人| 波多野结衣在线一区| 国产精品久久久久久久久快鸭| 91久久久免费一区二区| 精品一区二区在线免费观看| 亚洲女同一区二区| 国产亚洲一二三区| 欧美精品国产精品| 97se亚洲国产综合自在线不卡| 裸体健美xxxx欧美裸体表演| 亚洲码国产岛国毛片在线| 精品国产污污免费网站入口| 欧美日韩不卡在线| 99精品欧美一区二区三区小说 | 亚洲国产精品久久久男人的天堂| 亚洲精品一区二区在线观看| 欧美日韩不卡在线| 日本道在线观看一区二区| 福利一区二区在线| 久久精品国内一区二区三区| 亚洲在线中文字幕| 亚洲色图制服丝袜| 亚洲国产精品二十页| 精品国产91洋老外米糕| 欧美久久久久久久久| 色婷婷av一区二区三区软件| 大尺度一区二区| 国产一区二区免费看| 日本不卡一区二区| 日韩经典中文字幕一区| 亚洲国产精品人人做人人爽| 一区二区高清免费观看影视大全| 国产精品美女久久久久久| 久久只精品国产| 精品国产污网站| 精品久久久久久综合日本欧美| 日韩亚洲欧美综合| 欧美一区日本一区韩国一区| 欧美午夜不卡视频| 欧美三级中文字幕| 精品视频123区在线观看| 欧美午夜精品一区二区三区| 欧美亚洲禁片免费| 欧美在线一二三| 欧美日韩国产色站一区二区三区| 欧美三级中文字幕在线观看| 欧美裸体一区二区三区| av午夜一区麻豆| 日韩经典中文字幕一区| 石原莉奈在线亚洲三区| 日日摸夜夜添夜夜添国产精品| 亚洲成人福利片| 亚洲v精品v日韩v欧美v专区| 肉丝袜脚交视频一区二区| 天天做天天摸天天爽国产一区| 日欧美一区二区| 久久av中文字幕片| 国产精品1024| 9i看片成人免费高清| 在线免费一区三区| 欧美日韩视频一区二区| 日韩一区和二区| 久久久久久久久久久黄色| 中文字幕国产精品一区二区| 亚洲欧美日韩久久| 天天影视涩香欲综合网| 激情综合网av| 99r国产精品| 欧美日韩色综合| 日韩欧美一区二区免费| 国产日韩亚洲欧美综合| 亚洲美女精品一区| 日韩成人免费电影| 国产精品99精品久久免费| 91免费小视频| 欧美一区二区三区婷婷月色| 国产欧美综合在线| 亚洲一区二区成人在线观看| 久久国产生活片100| 成人美女在线观看| 欧美久久一区二区| 欧美激情一区三区| 午夜成人免费电影| 成熟亚洲日本毛茸茸凸凹| 欧美日韩亚洲高清一区二区| 国产午夜精品久久久久久免费视| 一区二区三区中文免费| 韩国v欧美v日本v亚洲v| 色狠狠av一区二区三区| 精品福利av导航| 亚洲自拍欧美精品| 国产美女在线观看一区| 欧美日韩国产免费一区二区| 欧美激情在线观看视频免费| 日韩成人精品在线观看| 99久久综合精品| 欧美成人video| 亚洲综合久久久久| 成人免费视频免费观看| 日韩视频一区二区在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产亚洲人成网站| 亚洲18女电影在线观看| 成人性生交大片免费看在线播放| 5566中文字幕一区二区电影| 亚洲欧洲精品成人久久奇米网| 精品一区二区免费| 在线电影一区二区三区| 亚洲欧美一区二区三区孕妇| 国产福利一区二区三区视频在线| 欧美福利视频一区| 亚洲国产视频a| 97超碰欧美中文字幕| 国产午夜精品福利| 国产精品久久久久7777按摩| 久久国产尿小便嘘嘘尿| 91蝌蚪porny| 337p日本欧洲亚洲大胆色噜噜| 亚洲高清不卡在线观看| 波多野结衣欧美| 国产欧美日韩视频一区二区| 久久国产精品色婷婷| 欧美一区二区国产| 丝袜亚洲另类欧美综合| 欧美性xxxxxx少妇| 夜夜揉揉日日人人青青一国产精品 | 91女厕偷拍女厕偷拍高清| 欧美国产精品一区| 国产传媒日韩欧美成人| 久久色中文字幕| 国产在线精品国自产拍免费| 日韩美一区二区三区| 免费观看久久久4p| 91精品福利在线一区二区三区| 午夜精品福利久久久| 中文字幕不卡在线观看| av动漫一区二区| 国产色91在线| 国产一区999| 国产拍揄自揄精品视频麻豆| 国产成人在线看| 国产精品盗摄一区二区三区| 99久久免费视频.com| 日韩一区在线免费观看| 一本到不卡精品视频在线观看| 亚洲欧美另类久久久精品| 日本高清无吗v一区| 亚洲国产视频网站| 欧美一级视频精品观看| 久久精品国产亚洲一区二区三区| 日韩欧美视频一区| 国产老妇另类xxxxx| 久久人人爽爽爽人久久久| 国产乱人伦精品一区二区在线观看| 久久久亚洲午夜电影| 丁香亚洲综合激情啪啪综合| 国产精品久久久久三级| 色欲综合视频天天天| 亚洲超碰精品一区二区| 日韩欧美国产wwwww| 粉嫩蜜臀av国产精品网站| 中文字幕永久在线不卡| 欧洲一区二区三区在线| 青青国产91久久久久久| 久久综合九色综合欧美98 | 99精品久久久久久| 日韩三级伦理片妻子的秘密按摩| 久久激情五月激情| 久久亚洲综合色一区二区三区| 国产精品一二一区| 综合自拍亚洲综合图不卡区| 精品视频一区三区九区| 另类调教123区 | 色综合天天做天天爱| 亚洲第一久久影院| 久久久亚洲精品一区二区三区| 99精品国产一区二区三区不卡| 日韩一区欧美二区| 国产欧美日韩在线| 欧美日韩在线三区| 国产精品亚洲综合一区在线观看| 亚洲乱码日产精品bd| 日韩精品一区二区三区视频| 成人动漫中文字幕| 日精品一区二区三区| 国产精品九色蝌蚪自拍| 欧美一区日韩一区| 色综合久久九月婷婷色综合| 免费一级片91| 成人性生交大片免费看在线播放| 亚洲国产一区二区三区| 国产亚洲成年网址在线观看| 欧美日韩国产小视频在线观看| 国产激情视频一区二区在线观看| 色呦呦日韩精品| 青青草精品视频| 中文字幕一区二区三区不卡| 日韩欧美成人午夜| 在线观看av一区二区| 懂色av一区二区夜夜嗨|