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

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

?? currencyedit.pas

?? 實(shí)現(xiàn)貨幣編輯的控制,用得很方便 ,絕對安全
?? PAS
字號:
Unit CurrencyEdit;

Interface

Uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, Menus;

Type
  TCurrencyEdit = Class (TCustomMemo)
  Private
    FDecimals    : integer;
    FMaxLength   : integer;
    FormatString : string;
    DecimalPos   : integer;
    FReadOnly: Boolean;
    Procedure SetDecimals (Value: integer);
    Procedure SetMaxLength (Value: integer);
    Function StripCommas (AString: string) : string;
    Procedure Reformat;
    Procedure CMEnter (Var Message: TCMGotFocus); Message CM_ENTER;
    Procedure CMExit (Var Message: TCMLostFocus); Message CM_Exit;
    Function GetTextAsFloat : Extended;
    Procedure SetTextAsFloat (Value: Extended);
  Protected
    Procedure KeyDown (Var Key: Word; Shift: TShiftState);Override;
    Procedure KeyPress (Var Key: char);Override;
  Public
    Constructor Create (AOwner: TComponent);Override;
  Published
    Property MaxLength : integer Read FMaxLength Write SetMaxLength;
    Property Decimals : integer Read FDecimals Write SetDecimals;
    Property Value : Extended Read GetTextAsFloat Write SetTextAsFloat;
    Property Alignment Default taRightJustify;
    Property BorderStyle;
    Property Color;
    Property Ctl3D;
    Property DragCursor;
    Property DragMode;
    Property Enabled;
    Property Font;
    Property HideSelection;
    Property ParentColor;
    Property ParentCtl3D;
    Property ParentFont;
    Property ParentShowHint;
    Property PopupMenu;
    Property ReadOnly;
    Property ShowHint;
    Property TabOrder;
    Property TabStop;
    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;
  End;

Procedure Register;

Implementation

var
  HaveGetFloat:Boolean;

Constructor TCurrencyEdit.Create (AOwner: TComponent);
Begin
  Inherited Create (AOwner);
  WantReturns := False;
  Height := 24;
  Width := 120;
  Alignment := taRightJustify;
  DecimalPos := 0;
  FMaxLength := 16;
  Decimals := 2
End;


Procedure TCurrencyEdit.SetDecimals (Value: integer);
Begin
  If Value<>2 then
    Exit;
  FDecimals := Value;
  FormatString := '¥#,##0.00';
  MaxLength := MaxLength;
  Reformat
End;


Procedure TCurrencyEdit.SetMaxLength (Value: integer);
Begin
  If (Value < 20) and (Value > FDecimals + 1) Then
    FMaxLength := Value;
  If (FMaxLength - FDecimals - 1) mod 4 = 0 Then
    Dec (FMaxLength)
End;


Function TCurrencyEdit.StripCommas (AString: string) : string;
Var
  StringValue: Extended;
  ErrorPos    : integer;
  HaveDecimal:boolean;
Begin
  HaveDecimal:=False;
  While (Pos (ThousandSeparator, AString) > 0) Do
    delete(AString, Pos (ThousandSeparator, AString), 1);
  While (Pos (DecimalSeparator, AString) > 0) Do
  begin
    delete (AString, Pos (DecimalSeparator, AString), 1);
    HaveDeciMal:=True;
  end;
  While (Pos ('¥', AString) > 0) Do
    delete (AString, Pos ('¥', AString), 2);
  Val (AString, StringValue, ErrorPos);
  If ErrorPos > 0 Then
    Result := '0'
  Else
  Begin
    if not HaveDecimal then
       AString:=AString+'.00'
    else
       Insert (DecimalSeparator, AString, Length (AString) - 1);
    Result := AString
  End
End;


Procedure TCurrencyEdit.Reformat;
Begin
  Text := FormatFloat (FormatString, StrToFloat (StripCommas (Text)))
End;


Procedure TCurrencyEdit.CMEnter (Var Message: TCMGotFocus);
var
  AString:string;
Begin
  HaveGetFloat:=False;
  AString:=Text;
  While (Pos ('¥', AString) > 0) Do
    Delete (AString, Pos ('¥', AString), 2);
  While (Pos (ThousandSeparator, AString) > 0) Do
    Delete(AString, Pos (ThousandSeparator, AString), 1);
  While ((Pos(Copy(AString,Length(AString),1),'0.')>0) ) Do
  begin
    if Copy(AString,Length(AString),1)='.' then
    begin
      Delete(AString, Length(AString), 1);
      Break;
    end;
    Delete(AString, Length(AString), 1);
    if AString='' then
    begin
      AString:='0';
      Break;
    end;
  end;
  Text:=AString;
  SelectAll;
  Inherited;
End;

Procedure TCurrencyEdit.CMExit (Var Message: TCMLostFocus);
var
  AString:string;
Begin
  AString:=Text;
  if Pos (DecimalSeparator,AString)>0 then
  begin
    if Length(AString)-Pos (DecimalSeparator,AString)<=1 then
      AString:=AString+'0'
  end
  else
    AString:=AString+'.00';
  Text:=AString;
  reformat;
  HaveGetFloat:=True;
  Inherited;
End;


Procedure TCurrencyEdit.KeyDown (Var Key: Word; Shift: TShiftState);
Var
  CursorPos : integer;
  Buffer    : string;
Begin
  if ReadOnly then Exit;
  Inherited KeyDown (Key, Shift);
  If Key = VK_DELETE Then
  Begin
    Buffer := Text;
    CursorPos := Length (Buffer) - SelStart - SelLength;
    if SelLength<>0 then
    begin
      Delete(Buffer, SelStart+1, SelLength);
      Key:=0;
      Text := Buffer;
      SelStart := Length (Text) - CursorPos;
      Exit;
    end
    else begin
      Delete(Buffer, SelStart+1, 1);
      Key:=0;
      Text := Buffer;
      SelStart := Length (Text) - CursorPos+1 ;
      Exit;
    end;
  end;
End;

Procedure TCurrencyEdit.KeyPress (Var Key: char);
Var
  Buffer    : string;
  CursorPos : integer;
Begin
  if ReadOnly then Exit;
  Inherited KeyPress (Key);      //if Key=#13 then Exit; 
  Buffer := Text;
  CursorPos := Length (Buffer) - SelStart - SelLength;
  if SelLength<>0 then
    Delete(Buffer, SelStart+1, SelLength);
  if Key=#8 then
  begin
    Delete (Buffer, Length (Buffer) - CursorPos, 1);
    Text := Buffer;
    SelStart := Length (Text) - CursorPos;
    Key:=#0;
    Exit;
  end;
  if not (Key in ['0' .. '9','.','-']) then
  begin
    Key:=#0;
    Exit;
  end;
  if (Pos (DecimalSeparator, Buffer) > 0) then
  begin
    if (Key='.') or ((Cursorpos<FDecimals+1)
    and (Length(Buffer)-Pos (DecimalSeparator, Buffer)>=FDecimals)) then
    begin
      Key:=#0;
      Exit;
    end;
  end;
  if Key='.' then
  begin
    if CursorPos>FDecimals then
    begin
      Key:=#0;
      Exit;
    end;
  end;
  if  Length(Buffer)>=FMaxLength then
  begin
    Key:=#0;
    Exit;
  end;
  if Key='-' then
  begin
    if CursorPos<>Length(Buffer) then
    begin
      Key:=#0;
      Exit;
    end;
  end;
  Insert (Key, Buffer, Length (Buffer) - CursorPos + 1);
  Text := Buffer;
  SelStart := Length (Text) - CursorPos;
  Key:=#0;
End;

Function TCurrencyEdit.GetTextAsFloat;
var
  AMessage:TCMLostFocus;
  //B, T: Boolean;
Begin
  //B:=False; T:=False;
  if not HaveGetFloat then
    //if Focused then begin B:=True; T:=True; end;
    CMExit(AMessage);
    //if B and T then begin CMEnter(AMessage); T:=False; end;
  Result := StrToFloat (StripCommas (Text))
End;


Procedure TCurrencyEdit.SetTextAsFloat (Value: Extended);
Begin
  Text := FormatFloat (FormatString, Value)
End;


Procedure Register;
Begin
  RegisterComponents ('MyVcl', [TCurrencyEdit])
End;


End.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自拍一区| 国产一区亚洲一区| 日韩欧美视频在线| 成人高清免费观看| 日本不卡高清视频| 一区二区三区免费观看| 欧美激情自拍偷拍| 日韩精品一区二区三区四区 | 亚洲成av人片一区二区梦乃| 91成人在线观看喷潮| 日韩美女视频一区| 91猫先生在线| 夜夜揉揉日日人人青青一国产精品| 国产福利一区二区| 国产精品久99| av成人免费在线观看| 亚洲三级免费观看| 91在线国产观看| 国产午夜精品一区二区三区视频 | 2023国产精品| 欧美日韩国产一级| 99久久久国产精品| 久久激情五月激情| 日本伊人午夜精品| 一区二区三区欧美| 亚洲乱码国产乱码精品精小说| 久久久国产精品不卡| 日韩一区二区免费在线观看| 欧美三级日本三级少妇99| 99久久99精品久久久久久| 丰满亚洲少妇av| 粉嫩av一区二区三区在线播放| 久久99精品一区二区三区三区| 亚洲国产另类av| 一区二区三区鲁丝不卡| 亚洲欧美日韩成人高清在线一区| 国产精品进线69影院| 中文字幕国产一区| 亚洲欧美在线观看| 中文字幕中文字幕一区二区| 亚洲国产精品v| 国产欧美日韩麻豆91| 久久久久久99久久久精品网站| 精品剧情在线观看| 精品国产三级电影在线观看| 日韩手机在线导航| 欧美mv日韩mv亚洲| 欧美tickle裸体挠脚心vk| 精品国产3级a| 久久久国产精品麻豆| 欧美激情综合在线| 亚洲欧洲成人自拍| 亚洲激情av在线| 亚洲五码中文字幕| 日韩精品电影在线观看| 91在线你懂得| 91在线观看美女| 成人动漫一区二区在线| 国产主播一区二区| 国产尤物一区二区| 国产精品综合一区二区三区| 免费不卡在线视频| 日韩精品电影一区亚洲| 免费久久精品视频| 亚洲精品欧美综合四区| 欧美极品aⅴ影院| 97国产一区二区| 欧美色综合影院| 日韩一区二区高清| 国产人成亚洲第一网站在线播放| 国产精品日韩成人| 亚洲二区在线视频| 国产美女主播视频一区| 91蜜桃网址入口| 欧美酷刑日本凌虐凌虐| 国产亚洲婷婷免费| 亚洲一区二区三区在线播放| 琪琪久久久久日韩精品| 成人免费视频国产在线观看| 欧美午夜电影一区| 久久综合久久综合久久综合| 中文字幕综合网| 久久av老司机精品网站导航| 99久久国产综合精品色伊| 欧美日韩日本视频| 国产欧美日韩精品a在线观看| 一区二区三区国产豹纹内裤在线| 麻豆精品在线看| av在线不卡网| 日韩一区二区三区电影在线观看 | 欧美中文字幕一二三区视频| 欧美一区二区三区视频免费| 中文字幕日韩精品一区| 日韩av电影免费观看高清完整版在线观看 | 欧美亚洲国产一卡| 精品久久久久久久久久久院品网| 亚洲丝袜精品丝袜在线| 国产在线观看免费一区| 欧洲一区在线观看| 国产精品日韩精品欧美在线| 免费看欧美美女黄的网站| 一本久久精品一区二区| 国产视频一区不卡| 日韩和欧美一区二区| 一本大道久久精品懂色aⅴ| 久久婷婷成人综合色| 亚洲无线码一区二区三区| 成人h动漫精品一区二区 | 国产精品天干天干在线综合| 日韩av电影免费观看高清完整版在线观看| 成人黄页毛片网站| 精品久久久久久久人人人人传媒| 亚洲午夜av在线| 91麻豆免费看| 国产精品久久久久久久第一福利| 久久99国产精品久久| 欧美一区二区三区公司| 亚洲国产美女搞黄色| 91美女蜜桃在线| 中文字幕亚洲精品在线观看 | 欧美人xxxx| 欧美激情一区二区三区不卡| 久久av中文字幕片| 日韩一区二区三区四区| 亚洲成人免费看| 欧美日韩中字一区| 亚洲黄一区二区三区| 91麻豆国产福利精品| 亚洲色图色小说| 成人黄色在线视频| 中文字幕一区二区在线播放| 成人深夜福利app| 国产精品国产三级国产有无不卡 | 欧美亚洲自拍偷拍| 亚洲综合成人在线视频| 一本一道久久a久久精品| 亚洲免费av在线| 欧美在线观看一区| 亚洲va在线va天堂| 日韩一区和二区| 精品亚洲porn| 久久久国产精品麻豆| 成人网在线免费视频| 日韩一区在线免费观看| 91麻豆6部合集magnet| 一区二区三区精品久久久| 欧美视频在线观看一区二区| 午夜a成v人精品| 日韩欧美的一区| 国产剧情在线观看一区二区| 日本一区二区三区四区| 99久久精品国产网站| 亚洲影视在线播放| 在线观看91av| 国内成人免费视频| 国产精品乱人伦中文| 色婷婷久久久综合中文字幕| 亚洲伊人色欲综合网| 日韩视频免费观看高清完整版在线观看| 喷水一区二区三区| 国产亚洲精品久| 91麻豆国产在线观看| 日韩不卡在线观看日韩不卡视频| 精品久久久影院| 成人高清视频在线| 亚洲va天堂va国产va久| 亚洲精品一区二区三区四区高清 | 日韩精品国产精品| 久久精品亚洲精品国产欧美| av在线不卡免费看| 日韩 欧美一区二区三区| 久久久久久**毛片大全| 91原创在线视频| 蜜臀av亚洲一区中文字幕| 国产欧美日韩综合| 欧美综合天天夜夜久久| 美国欧美日韩国产在线播放| 国产精品免费网站在线观看| 欧美视频完全免费看| 九色|91porny| 亚洲人成亚洲人成在线观看图片| 在线综合视频播放| 成人av网站免费| 国产一区二区三区在线观看精品| 亚洲女同ⅹxx女同tv| 欧美一区二区免费观在线| 不卡一区二区三区四区| 麻豆精品视频在线| 亚洲视频在线观看三级| 日韩欧美国产午夜精品| 色婷婷久久久亚洲一区二区三区| 久热成人在线视频| 夜夜爽夜夜爽精品视频| 久久久影视传媒| 欧美精品第1页| 92国产精品观看| 毛片一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 精品亚洲成a人在线观看| 亚洲已满18点击进入久久|