unit updownedit; Antarmuka menggunakan windows, sysutils, kelas, kontrol, stdctrls, comctrls, pesan; ketik tupdownedit = class (tcustomcontrol) pribadi {Deklarasi Pribadi} Updown: Tupdown; Sunting: tedit; Fmin: integer; FMAX: Integer; Fonchange: tnotifyevent; Fposisi: bilangan bulat; Prosedur wmsize ( var msg: twmsize); pesan wm_size; Prosedur SetMax (Nilai Const : Integer); Prosedur SetMin (Nilai Const : Integer); Prosedur Editchange (pengirim: TOBJEKS); Prosedur EditKeyPress (pengirim: Tobject; var Key: char); Prosedur UpdownClick (Pengirim: Tobject; Tombol: Tudbtntype); setPosisi prosedur (nilai const : integer); terlindung {Deklarasi yang dilindungi} publik {Deklarasi Publik} constructor create (aowner: tComponent); mengesampingkan ; Destructor menghancurkan; mengesampingkan ; diterbitkan {Deklarasi yang Diterbitkan} Properti Max: Integer Read Fmax Write SetMax; Properti Min: Integer Read Fmin Write SetMin; Posisi Properti : Integer membaca setPosisi tulis Fposition; Properti Onchange: tnotifyevent baca fonchange write fonchange; akhir ; register prosedur ; Daftar Prosedur Implementasi ; Mulai RegisterComponents ('Standard', [tupdownEdit]); akhir ; {Tupdownedit} constructor tupdownedit.create (Aowner: tComponent); mulai warisan create (aowner); SetBounds (0, 0, 57, 21); Sunting: = Tedit.create (self); EDIT.LEFT: = 0; EDIT.TOP: = 0; Edit.width: = 40; Edit.align: = alleft; Edit.parent: = self; Edit.text: = '0'; // setWindowlong (edit.handle, gwl_style, getwindowlong (edit.handle, gwl_style) atau es_number); Updown: = tupdown.create (self); Updown.height: = tinggi; // 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; akhir ; Destructor tupdownedit.destroy; Mulai edit. Gratis; Updown.Free; diwariskan ; akhir ; Prosedur tupdownedit.editchange (pengirim: Tobject); Mulai updown.position: = strtointDef (edit.text, 0); Fposition: = updown.position; jika ditugaskan (fonchange) maka fonchange (self); akhir ; Prosedur tupdownEdit.EditKeyPress (pengirim: tobject; var Key: char); Var S: Set Char; I: Integer; Str, teks: string ; Begin S: = [#8, '0' .. '9']; Jika kunci = #8 maka keluar; jika tidak (kunci dalam s) maka mulai kunci: = #0; KELUAR; akhir ; //控制输入数字的大小jika tedit (pengirim) .sellength> 0 lalu mulai teks: = tedit (pengirim) .text; Str: = copy (teks, 1, tedit (pengirim) .selstart - 1) + kunci + salin (teks, tedit (pengirim) .selstart + tedit (pengirim) .sellength + 1, panjang (teks)); i: = strtoint (str); Jika i> fmax maka mulai kunci: = #0; KELUAR; akhir ; end else if strtoint (tedit (pengirim) .text + key)> fmax lalu mulai tombol: = #0; KELUAR; end else if strtoint (tedit (pengirim) .text + key) <fmin kemudian mulai kunci: = #0; KELUAR; akhir ; akhir ; Prosedur tupdownEdit.setMax (nilai const : integer); mulai fmax: = nilai; Updown.max: = fmax; Jika strtointDef (Edit.Text, 0)> fmax maka mulailah updown.position: = fmax; Edit.text: = inttoStr (fmax); Fposition: = updown.position; akhir ; akhir ; Prosedur tupdownEdit.setMin (nilai const : integer); mulai fmin: = nilai; Updown.min: = fmin; jika strtointDef (edit.text, 0) <fmin kemudian mulailah updown.position: = fmin; Edit.text: = inttoStr (fmin); Fposition: = updown.position; jika ditugaskan (fonchange) maka fonchange (self); akhir ; akhir ; Prosedur tupdownEdit.setPosition (nilai const : integer); Mulai jika (value> = fmin) atau (nilai <= fmax) Kemudian mulailah fposisi: = nilai; Updown.position: = fposition; Edit.text: = inttoStr (fposition); jika ditugaskan (fonchange) maka fonchange (self); akhir ; akhir ; Prosedur tupdownEdit.updownClick (pengirim: Tobject; tombol: tudbtntype); Mulailah jika maks = 0 lalu mulailah maks: = 100; Updown.max: = Max; akhir ; Updown.min: = min; Edit.text: = inttoStr (updown.position); Edit.setFocus; Edit.Selectall; jika ditugaskan (fonchange) maka fonchange (self); Fposition: = updown.position; akhir ; Prosedur tupdownEdit.wmsize ( var msg: twmsize); mulai edit.width: = lebar - 15; Updown.left: = edit.width + 1; Updown.height: = tinggi; diwariskan ; akhir ; akhir .