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

📄 zidingyikongjian.txt

📁 刚开始准备参考一个IP输入控件来编写
💻 TXT
字号:
unit InputEdit;
interface
uses Windows, Messages, SysUtils, Classes,
 Forms, Controls, ComCtrls, CommCtrl,StdCtrls ;

type
  TInputEdit = class(TCustomEdit)
  private
    FNumber1:integer;
    FNumber2:integer;
    FUnit1:widestring;
    FUnit2:widestring;
    FBili:integer;

    procedure SetNumber1(Value:integer);
    function GetNumber1:integer;
    procedure SetNumber2(Value:integer);
    function GetNumber2:integer;
    procedure SetBili(Value:integer);
    function GetBili:integer;
    procedure SetAllCount(Value:integer);
    function GetAllCount:integer;
    procedure SetUnit1(Value:widestring);
    function GetUnit1:Widestring;
    procedure SetUnit2(Value:widestring);
    function GetUnit2:Widestring;
    function CalculateCount:integer;
    Procedure DoChange;

  protected
    procedure KeyPress(var Key: char); override;

  public
    constructor Create(AOwner: TComponent); override;
  published
    property Bags:integer read GetNumber1 write SetNumber1; //包装数量
    property Piece:integer read GetNumber2 write SetNumber2;//片数
    property Count:integer read GetAllCount write SetAllCount;//总片数
    property BagUnit:widestring read GetUnit1 write SetUnit1;//包装单位名称
    property PieceUnit:widestring read GetUnit2 write SetUnit2;//小件单位名称
    Property Bili:integer read GetBili write SetBili;

    property Align;
    property Anchors;
    property AutoSelect;
    property AutoSize;
    property BevelEdges;
    property BevelInner;
    property BevelKind default bkNone;
    property BevelOuter;
    property BevelWidth;
    property BiDiMode;
    property BorderStyle;
    property CharCase;
    property Color;
    property Constraints;
    property Ctl3D;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property Font;
    property HideSelection;
    property ImeMode;
    property ImeName;
    property MaxLength;
    property OEMConvert;
    property ParentBiDiMode;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PasswordChar;
    property PopupMenu;
    property ReadOnly;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Text;
    property Visible;
    property OnChange;
    property OnClick;
    property OnContextPopup;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress ;
    property OnKeyUp;
    property OnMouseActivate;
    property OnMouseDown;
    property OnMouseEnter;
    property OnMouseLeave;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDock;
    property OnStartDrag;
  end;

procedure Register;

implementation

{~~~~~~~~~~~~~~~~~~~~~~TInputEdit~~~~~~~~~~~~~~~~~~~~~~~~}
constructor TInputEdit.Create(AOwner: TComponent);
begin
  //初始化ICC_INTERNET_CLASSES类控件
//  CheckCommonControl(ICC_INTERNET_CLASSES);
  inherited Create(AOwner);
  FNumber1:=0;
  FNumber2:=0;
  FUnit1:='箱';
  FUnit2:='片';
  FBili:=10;
  DoChange;
end;

procedure TInputEdit.DoChange;
begin
  Text:=inttostr(FNumber1)+FUnit1+inttostr(FNumber2)+Funit2;
end;

function TInputEdit.CalculateCount:integer;
var
  Symbo:integer;
begin
  if Fnumber1>0 then
    symbo:=1
  else
    symbo:=-1;
  result:=symbo*(abs(Fnumber1)*FBili+abs(FNumber2));
end;


procedure TInputEdit.KeyPress(var Key: char);
begin
  inherited keypress(key);
  if (ord(key)<=57) and (ord(key)>=48) then
    inherited   //如果是数字则调用原来的处理程序
  else if key='-' then
  begin
    if self.SelStart=0 then
      inherited
    else
      key:=#0;
  end
  else
    Key:=#0;
end;

procedure TInputEdit.SetNumber1(Value:integer);
begin
  if FNumber1<>Value then
  begin
    FNumber1:=Value;
    DoChange;
  end;
end;

function TInputEdit.GetNumber1:integer;
begin
  Result:=FNumber1;
end;

procedure TInputEdit.SetNumber2(Value:integer);
begin
  if (FNumber2<>Value) and (FNumber2>=0) then
  begin
    FNumber2:=Value;
    DoChange;
  end;
end;

function TInputEdit.GetNumber2:integer;
begin
  Result:=FNumber2;
end;

procedure TInputEdit.SetBili(Value:integer);
begin
  if (FBili<>Value) and (Value>0) then
  begin
    FBili:=Value;
  end;
end;


function TInputEdit.GetBili:integer;
begin
  Result:=FBili;
end;

procedure TInputEdit.SetAllCount(Value:integer);
var
  l:integer;
begin
  if Value= CalculateCount then exit;
  if value>=0 then
    l:=1
  else
    l:=-1;
  FNumber1:=l*(abs(Value) div FBili);
  FNumber2:=abs(Value) Mod FBili;
  DoChange;
end;

function TInputEdit.GetAllCount:integer;
begin
  Result:=CalculateCount;
end;

procedure TInputEdit.SetUnit1(Value:widestring);
begin
  if Value<>FUnit1 then
  begin
    FUnit1:=Value;
    DoChange;
  end;
end;

function TInputEdit.GetUnit1:Widestring;
begin
  Result:=FUnit1;
end;

procedure TInputEdit.SetUnit2(Value:widestring);
begin
  if Value<>FUnit2 then
  begin
    FUnit2:=Value;
    DoChange;
  end;
end;

function TInputEdit.GetUnit2:Widestring;
begin
  Result:=FUnit2;
end;


//注册TInputEdit控件
procedure Register;
begin
  RegisterComponents('Arcan', [TInputEdit]);
end;
end.

⌨️ 快捷键说明

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