UNIT UPDOWNEDIT; อินเตอร์เฟส ใช้ windows, sysutils, คลาส, การควบคุม, stdctrls, comctrls, ข้อความ; พิมพ์ tupdownedit = คลาส (tcustomControl) ส่วนตัว {ประกาศส่วนตัว} updown: tupdown; แก้ไข: Tedit; fmin: จำนวนเต็ม; fmax: จำนวนเต็ม; Fonchange: tnotifyevent; fposition: จำนวนเต็ม; โพรซีเดอร์ wmsize ( var msg: twmsize); ข้อความ wm_size; ขั้นตอน setMax (ค่า const : จำนวนเต็ม); ขั้นตอน setmin (ค่า const : จำนวนเต็ม); ขั้นตอน EDITCHANGE (ผู้ส่ง: TOBJECT); ขั้นตอน การแก้ไข (ผู้ส่ง: tobject; var key: char); ขั้นตอน updownclick (ผู้ส่ง: tobject; ปุ่ม: tudbtntype); ขั้นตอนการ ตั้งค่า (ค่า const : จำนวนเต็ม); ได้รับการคุ้มครอง {การประกาศป้องกัน} สาธารณะ {ประกาศสาธารณะ} ตัวสร้าง สร้าง (AOWNER: TCOMPONENT); แทนที่ ; Destructor ทำลาย; แทนที่ ; ที่ตีพิมพ์ {ประกาศที่เผยแพร่} คุณสมบัติ สูงสุด: จำนวนเต็ม อ่าน fmax เขียน setmax; คุณสมบัติ ขั้นต่ำ: จำนวนเต็ม อ่าน fmin เขียน setmin; ตำแหน่ง คุณสมบัติ : จำนวนเต็ม อ่าน fposition เขียน setposition; คุณสมบัติ onchange: tnotifyevent อ่าน fonchange เขียน fonchange; จบ ; ขั้นตอนการลงทะเบียน ; การลงทะเบียนขั้นตอน การใช้งาน เริ่มต้น การลงทะเบียน ('มาตรฐาน', [tupdownedit]); จบ ; {tupdownedit} constructor tupdownedit.create (aowner: tComponent); เริ่มต้น ที่สืบทอด มาสร้าง (aowner); setbounds (0, 0, 57, 21); แก้ไข: = tedit.create (ตัวเอง); 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) หรือ es_number); updown: = tupdown.create (ตัวเอง); updown.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 (ผู้ส่ง: tobject); เริ่ม updown.position: = strtointdef (edit.text, 0); fposition: = updown.position; ถ้า ได้รับมอบหมาย (Fonchange) จากนั้น Fonchange (ตัวเอง); จบ ; ขั้นตอน tupdownedit.editkeypress (ผู้ส่ง: tobject; var key: char); var s: ชุด ถ่าน; ฉัน: จำนวนเต็ม; STR, TEXT: String ; เริ่มต้น S: = [#8, '0' .. '9']; ถ้า key = #8 แล้ว ออก; ถ้าไม่ใช่ (คีย์ ใน s) แล้ว เริ่ม คีย์: = #0; ออก; จบ ; //控制输入数字的大小ถ้า tedit (ผู้ส่ง) .Sellength> 0 จากนั้น เริ่มต้น ข้อความ: = TEDIT (ผู้ส่ง) .Text; str: = คัดลอก (ข้อความ, 1, tedit (ผู้ส่ง) .SelStart - 1) + คีย์ + คัดลอก (ข้อความ, tedit (ผู้ส่ง) .SelStart + TEDIT (ผู้ส่ง) .Sellength + 1, ความยาว (ข้อความ)); i: = strtoint (str); ถ้า ฉัน> fmax แล้ว เริ่ม ปุ่ม: = #0; ออก; จบ ; สิ้นสุด อื่น ๆ ถ้า strtoint (tedit (ผู้ส่ง) .Text + คีย์)> fmax จากนั้น เริ่ม คีย์: = #0; ออก; สิ้นสุด อื่น ๆ ถ้า strtoint (tedit (ผู้ส่ง) .Text + คีย์) <fmin จากนั้น เริ่ม ปุ่ม: = #0; ออก; จบ ; จบ ; ขั้นตอน tupdownedit.setMax (ค่า const : จำนวนเต็ม); เริ่มต้น fmax: = ค่า; updown.max: = fmax; ถ้า strtointdef (แก้ไข text, 0)> fmax จากนั้น เริ่ม updown.position: = fmax; Edit.Text: = intToStr (fMax); fposition: = updown.position; จบ ; จบ ; ขั้นตอน tupdownedit.setmin (ค่า const : จำนวนเต็ม); เริ่ม fmin: = ค่า; updown.min: = fmin; ถ้า strtointdef (แก้ไข text, 0) <fmin จากนั้น เริ่ม updown.position: = fmin; Edit.Text: = intToStr (fmin); fposition: = updown.position; ถ้า ได้รับมอบหมาย (Fonchange) จากนั้น Fonchange (ตัวเอง); จบ ; จบ ; ขั้นตอน tupdownedit.setPosition (ค่า const : จำนวนเต็ม); เริ่มต้น ถ้า (value> = fmin) หรือ (ค่า <= fmax) จากนั้น เริ่ม fposition: = value; updown.position: = fposition; Edit.Text: = intToStr (fposition); ถ้า ได้รับมอบหมาย (Fonchange) จากนั้น Fonchange (ตัวเอง); จบ ; จบ ; ขั้นตอน tupdownedit.updownclick (ผู้ส่ง: tobject; ปุ่ม: tudbtntype); เริ่มต้น ถ้า สูงสุด = 0 จากนั้น เริ่ม สูงสุด: = 100; updown.max: = สูงสุด; จบ ; updown.min: = min; Edit.Text: = intToStr (updown.position); edit.setFocus; edit.selectall; ถ้า ได้รับมอบหมาย (Fonchange) จากนั้น Fonchange (ตัวเอง); fposition: = updown.position; จบ ; โพรซีเดอร์ tupdownedit.wmsize ( var msg: twmsize); เริ่ม แก้ไข. width: = ความกว้าง - 15; updown.left: = edit.width + 1; updown.height: = ความสูง; สืบทอด ; จบ ; จบ .