UNIT UPDOWNETIT; Интерфейс использует Windows, Sysutils, классы, элементы управления, STDCTRLS, COMCTRLS, Сообщения; Type tupdownedit = class (tcustomControl) private {Частные объявления} Updown: Tupdown; РЕДАКТИРОВАТЬ: ТЕДИТ; 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 (отправитель: tobject; кнопка: tudbtntype); Процедура SETPOSION (значение CONST : Integer); защищен {Защищенные объявления} публичный {Публичные объявления} конструктор Create (AOWNER: TCOMPONENT); переопределить ; разрушитель разрушил; переопределить ; опубликовано {Опубликованные объявления} Свойство Max: Integer Read fmax write setmax; Свойство min: целочисленное чтение fmin write setmin; Положение свойства : целое число читать fposition write setposition; Свойство OnChange: TnotifyEvent Read Fonchange Write Fonchange; конец ; Регистр процедур ; Регистр процедуры реализации ; Begin RegisterComponents ('Standard', [tupdownedit]); конец ; {Tupdownedit} конструктор tupdownetit.create (Aowner: tcomponent); начинать унаследованное Create (aowner); SetBounds (0, 0, 57, 21); Редактировать: = tedit.create (self); Edit.left: = 0; Edit.top: = 0; РЕДАКТИРОВАТЬ. Включитель: = 40; РЕДАКТИРОВАТЬ.align: = Allft; Edit.parent: = self; 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: = self; Fmin: = 0; Fmax: = 100; Edit.onchange: = editchange; Edit.onkeypress: = editkeypress; Updown.onclick: = UpdownClick; конец ; Destructor tupdownedit.destroy; Begin Edit.free; Updown.free; унаследован ; конец ; процедура tupdownEdit.editchange (отправитель: tobject); begin upposition.position: = strtointdef (edit.text, 0); Fposition: = Updown.position; Если назначено (fonchange) , то fonchange (self); конец ; Процедура tupdownetit.editkeypress (отправитель: tobject; var key: char); var S: набор ЧАР; я: целое число; Str, текст: строка ; Begin S: = [#8, '0' .. '9']; Если key = #8, затем выйдет; Если нет (ключ в s), то начинайте ключ: = #0; Выход; конец ; //控制输入数字的大小Если tedit (отправитель) .sellength> 0 , тогда начинайте текст: = tedit (отправитель) .Text; Str: = copy (text, 1, tedit (sender) .selstart - 1) + key + copy (text, tedit (отправитель) .selstart + tedit (отправитель) .sellength + 1, длина (текст)); i: = strtoint (str); Если я> fmax , то начинайте ключ: = #0; Выход; конец ; end else , если strtoint (tedit (sender) .text + key)> fmax , затем начинайте ключ: = #0; Выход; end else , если strtoint (tedit (sender) .text + key) <fmin , затем начинайте ключ: = #0; Выход; конец ; конец ; Процедура tupdownetit.setmax ( const value: integer); Begin fmax: = значение; Updown.max: = fmax; Если strtointdef (edit.text, 0)> fmax , тогда начинайте Updown.position: = fmax; Edit.text: = inttoStr (fmax); Fposition: = Updown.position; конец ; конец ; процедура tupdownEdit.setmin ( const value: integer); Begin 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 Значение: целое число); начинать if (value> = fmin) или (value <= fmax), затем начинайте fposition: = value; Updown.position: = fposition; Edit.text: = inttoStr (fposition); Если назначено (fonchange) , то fonchange (self); конец ; конец ; Процедура tupdownetit.updownclick (отправитель: tobject; кнопка: tudbtntype); Начните , если max = 0 , тогда начинайте макс: = 100; Updown.max: = max; конец ; Updown.min: = min; Edit.text: = inttoStr (updown.position); Edit.setfocus; Edit.selectall; Если назначено (fonchange) , то fonchange (self); Fposition: = Updown.position; конец ; Процедура tupdownetit.wmsize ( var msg: twmsize); Begin Edit.width: = ширина - 15; Updown.left: = edit.width + 1; Updown.height: = высота; унаследован ; конец ; конец .