單位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;繼承;結尾;結尾。