ユニットUpdownEdit;インターフェイスは、Windows、sysutils、クラス、コントロール、stdctrls、comctrls、メッセージを使用します。タイプtupdownedit = class (tcustomcontrol) private {プライベート宣言} Updown:Tupdown;編集:tedit; fmin:整数; fmax:整数; fonchange:tnotifyevent; fposition:整数;手順wmsize( var msg:twmsize);メッセージwm_size;手順SetMax( const Value:integer);手順SetMin( const Value:integer);手順Editchange(送信者:tobject);手順editkeypress(送信者:tobject; var key:char);手順updownclick(sender:tobject; button:tudbtntype);手順Setposition( const Value:integer);保護されています{保護された宣言}公共{公開宣言} Constructor Create(aowner:tcomponent);オーバーライド;デストラクタは破壊します。オーバーライド;公開{公開された宣言}プロパティマックス:整数読み取りfmax write setmax;プロパティmin:integer read fmin write setmin;プロパティの位置:整数読み取りfposition write setposition; Property Onchange:tnotifyevent読み取りfonchange write fonchange;終わり;手順登録。実装手順登録。 begint registerComponents( 'Standard'、[tupdownedit]);終わり; {tupdownedit} Constructor tupDownedit.create(aowner:tcomponent);継承create(aowner)を開始します。セットバウンド(0、0、57、21);編集:= tedit.create(self); edit.Left:= 0;編集:top:= 0;編集width:= 40; edit.Align:= Alleft; 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;編集を開始します。 Updown.Free;継承;終わり;手順tupdownedit.editchange(sender:tobject); begin updown.position:= strtointdef(edit.text、0); fposition:= updown.position;割り当てられた場合(fonchange) 、 fonchange(self);終わり;手順tupdownedit.editkeypress(sender:tobject; var key:char); var S:charのセット。 I:整数; str、テキスト:文字列; s : = [#8、 '0' .. '9']; key =#8の場合、終了します。そうでない場合(sのキー) 、キーを開始します:=#0;出口;終わり; //控制输入数字的大小tedit(sender).sellength> 0の場合、テキストを開始します:= tedit(sender).text; str:= copy(text、1、tedit(sender).selstart -1) + key + copy(text、tedit(sender).selstart + tedit(sender).sellength + 1、length(text)); i:= strtoint(str); i> fmaxの場合、キーを開始します:=#0;出口;終わり; strtoint(tedit(sender).text + key)> fmaxの場合、end end ext key:=#0;出口; strtoint ( tedit (sender).text + key)< fmin then key : =#0;出口;終わり;終わり;手順tupdownedit.setmax( const Value:integer); fmax := value; updown.max:= fmax; strtointdef(edit.text、0)> fmaxの場合、 updown.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:= fmin; edit.text:= inttostr(fmin); fposition:= updown.position;割り当てられた場合(fonchange) 、 fonchange(self);終わり;終わり;手順tupdownedit.setposition( const Value:integer); if (value> = fmin)または(value <= fmax)を開始してからfposition:= value; updown.position:= fposition; edit.text:= inttostr(fposition);割り当てられた場合(fonchange) 、 fonchange(self);終わり;終わり;手順tupdownedit.updownclick(sender: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); edit.widthを開始:= width -15; updown.left:= edit.width + 1; updown.height:= height;継承;終わり;終わり。