单位Updownedit;接口使用Windows,Sysutils,类,控件,STDCTRLS,COMCTRLS,消息;键入tupdownedit = class (tcustomcontrol)私有{私人声明}更新:tupdown;编辑:tedit; FMIN:整数; fmax:整数; fonchange:tnotifyEvent; fposition:整数;过程wmsize( var msg:twmsize);消息wm_size;过程setMax( const值:integer);过程setmin( const值:整数);过程Editchange(发件人:tobject);过程EditKeyPress(发件人:tobject; var键:char);过程UpdownClick(发件人:tobject;按钮:tudbtntype);过程setPosition( const值:整数);受保护{受保护的声明}民众{公开声明}构造函数创建(Alower:tcomponent);覆盖;毁灭者销毁;覆盖;出版{已发表声明}属性最大:整数读取fmax Write setMax;属性最小:整数读取fmin写入setmin;属性位置:整数读取fposition witr setPosition;属性onChange:tnotifyEvent读取fonchange write fonchange;结尾;程序登记册;实施程序登记册;开始寄存器('Standard',[tupdownedit]);结尾; {tupdownedit} constructor tupdownedit.create(Alower:tcomponent);开始继承的创建(Alower); setBounds(0,0,57,21);编辑:= tedit.create(self); edit.left:= 0; edit.top:= 0; edit.width:= 40; edit.Align:= alterft; edit.parent:= self; edit.text:='0'; // setWindowlong(edit.handle,gwl_style,getwindowlong(edit.handle,gwl_style)或es_number); Updown:= tupdown.create(self); updown.height:= height; // 20; updown.width:= 14; updown.left:= edit.width + 1; updown.parent:= self; fmin:= 0; fmax:= 100; edit.onchange:= editchange; edit.onkeypress:= editkeypress; updown.onclick:= updownClick;结尾; Destructor tupdownedit.destroy;开始edit.free; updown.free;继承;结尾;过程tupdownedit.editchange(发件人:tobject);开始updown.position:= strtointDef(edit.text,0); fposition:= updown.position;如果分配(fonchange) ,则fonchange(self);结尾;过程tupdownedit.editkeypress(发件人:tobject; var键:char); var s:一组char;我:整数; str,文字:字符串;开始s:= [#8,'0'..'9'];如果key =#8,则退出;如果不是(key in s) ,则开始键:=#0;出口;结尾; //控制输入数字的大小如果tedit(sender).sellength> 0 ,则开始文本:= tedit(sender).text; str:= copy(text,1,teDit(sender).selstart -1) +键 + copy(text,tedit(sender).selstart + tedit(sender).sellengths .sellengths .sellengths .sellengths + 1,length(text)); i:= strtoint(str);如果我> fmax ,则开始键:=#0;出口;结尾;结束如果strtoint(tedit(sender).text +键) > fmax ,然后开始键:=#0;出口;结束如果strtoint(tedit(sender).text +键) <fmin ,然后开始键:=#0;出口;结尾;结尾;过程tupdownedit.setmax( const value:integer);开始fmax:= value; updown.max:= fmax;如果strtointDef(edit.text,0)> fmax,则开始updown.position.position:= fmax; edit.text:= inttoStr(fmax); fposition:= updown.position;结尾;结尾;过程tupdownedit.setmin( const value:integer);开始fmin:= value; Updown.min:= fmin;如果strtointDef(edit.text,0)<fmin ,则开始updown.position.position:= fmin; edit.text:= inttoStr(fmin); fposition:= updown.position;如果分配(fonchange) ,则fonchange(self);结尾;结尾;过程tupdownedit.setposition( const value:integer);开始如果(值> = fmin)或(值<= fmax) ,然后开始fposition:= value; updown.position:= fposition; edit.text:= inttoStr(fposition);如果分配(fonchange) ,则fonchange(self);结尾;结尾;过程tupdownedit.updownclick(发件人:tobject; button:tudbtntype);如果max = 0,开始开始,然后开始max:= 100; updown.max:= max;结尾; Updown.min:= min; edit.text:= inttoStr(updown.position); edit.setfocus; edit.selectall;如果分配(fonchange) ,则fonchange(self); fposition:= updown.position;结尾;过程tupdownedit.wmsize( var msg:twmsize);开始编辑。宽:=宽度-15; updown.left:= edit.width + 1; updown.height:= height;继承;结尾;结尾。