وحدة updownedit ؛ تستخدم الواجهة Windows و SysUtils والفئات وعناصر التحكم و stdctrls و comctrls والرسائل ؛ اكتب tupdownedit = فئة (tcustomControl) خاص {إعلانات خاصة} updown: tupdown ؛ تحرير: تيديت ؛ FMIN: عدد صحيح ؛ fmax: عدد صحيح ؛ fonchange: tnotifyevent ؛ fposition: عدد صحيح ؛ الإجراء wmsize ( var msg: twmsize) ؛ رسالة wm_size ؛ الإجراء setMax (قيمة const : عدد صحيح) ؛ setmin الإجراء (قيمة const : عدد صحيح) ؛ الإجراء editchange (المرسل: TOBJECT) ؛ الإجراء editkeypress (المرسل: TOBJECT ؛ var المفتاح: char) ؛ الإجراء updownclick (المرسل: TOBJECT ؛ زر: tudbtntype) ؛ الإجراء setPosition (قيمة const : عدد صحيح) ؛ محمية {إعلانات محمية} عام {الإعلانات العامة} إنشاء مُنشئ (مالك: tcomponent) ؛ تجاوز تدمير المدمر . تجاوز المنشورة {إعلانات منشورة} Property Max: integer read fmax write setMax ؛ خاصية Min: integer قراءة fmin اكتب setmin ؛ موقف الخاصية : عدد صحيح قراءة fposition اكتب setPosition ؛ Property OnChange: tnotifyevent قراءة fonchange كتابة fonchange ؛ نهاية ؛ سجل الإجراءات ؛ سجل إجراءات التنفيذ ؛ ابدأ registerComponents ('Standard' ، [tupdownedit]) ؛ نهاية ؛ {tupdownedit} مُنشئ tupdownedit.create (aleener: tcomponent) ؛ ابدأ إنشاء إنشاء (مالك) ؛ setBounds (0 ، 0 ، 57 ، 21) ؛ تحرير: = tedit.create (الذات) ؛ edit.left: = 0 ؛ edit.top: = 0 ؛ edit.width: = 40 ؛ edit.Align: = alleft ؛ edit.parent: = الذات ؛ edit.text: = '0' ؛ // setWindowlong (edit.handle ، gwl_style ، getWindowlong (edit.handle ، gwl_style) أو es_number) ؛ updown: = tupdown.create (self) ؛ updown.Height: = الارتفاع ؛ // 20 ؛ updown.width: = 14 ؛ updown.left: = edit.width + 1 ؛ updown.parent: = الذات ؛ 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 (الذات) ؛ نهاية ؛ الإجراء tupdownedit.editkeypress (المرسل: tobject ؛ var مفتاح: char) ؛ var S: مجموعة من char ؛ أنا: عدد صحيح. شارع ، النص: سلسلة ؛ ابدأ S: = [#8 ، '0' .. '9'] ؛ إذا المفتاح = #8 ثم الخروج ؛ إذا لم يكن (مفتاح في S) ، فابدأ المفتاح: = #0 ؛ مخرج؛ نهاية ؛ //控制输入数字的大小إذا كان TEDIT (المرسل) .sellength> 0 ثم ابدأ النص: = tedit (المرسل) .Text ؛ STR: = نسخة (نص ، 1 ، TEDIT (المرسل) .selstart - 1) + مفتاح + نسخة (نص ، tedit (المرسل) .selstart + tedit (المرسل). الطول + 1 ، الطول (النص)) ؛ i: = strtoint (str) ؛ إذا كنت i> fmax ثم ابدأ المفتاح: = #0 ؛ مخرج؛ نهاية ؛ end else إذا كان strtoint (tedit (sender) .Text + Key)> fmax ثم ابدأ المفتاح: = #0 ؛ مخرج؛ end else إذا كان strtoint (tedit (sender) .Text + Key) <fmin ثم ابدأ المفتاح: = #0 ؛ مخرج؛ نهاية ؛ نهاية ؛ الإجراء tupdownedit.setmax (قيمة const : عدد صحيح) ؛ ابدأ fmax: = القيمة ؛ updown.max: = fmax ؛ إذا strtointdef (edit.text ، 0)> fmax ، فابدأ updown.position: = fmax ؛ edit.text: = inttoStr (fmax) ؛ fposition: = updown.position ؛ نهاية ؛ نهاية ؛ الإجراء tupdownedit.setmin (قيمة const : عدد صحيح) ؛ ابدأ fmin: = القيمة ؛ updown.min: = fmin ؛ إذا كانت strtointdef (edit.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: = max ؛ نهاية ؛ updown.min: = min ؛ edit.text: = inttoStr (updown.position) ؛ edit.setfocus ؛ edit.selectall ؛ إذا تم تعيين (fonchange) ثم fonchange (الذات) ؛ fposition: = updown.position ؛ نهاية ؛ الإجراء tupdownedit.wmsize ( var msg: twmsize) ؛ ابدأ edit.width: = العرض - 15 ؛ updown.left: = edit.width + 1 ؛ updown.Height: = الارتفاع ؛ ورث نهاية ؛ نهاية .