Einheit Updownedit; Schnittstelle verwendet Windows, Sysutils, Klassen, Steuerelemente, STDCtrls, Comctrls, Nachrichten; Typ tupdownedit = class (tcustomcontrol) privat {Private Deklarationen} Updown: tupdown; Bearbeiten: Tedit; Fmin: Ganzzahl; Fmax: Ganzzahl; Fonchange: tnotifyEvent; File: Ganzzahl; Prozedur WMSIZE ( var msg: twmSize); Nachricht Wm_Size; Prozedur setMax ( const value: Integer); Prozedur setmin ( const value: Integer); Prozedur Editchange (Absender: Tobject); Procedure EditKeypress (Absender: Tobject; var key: char); Prozedur updownClick (Absender: Tobject; Schaltfläche: TudBtnType); Prozedur -SetPosition ( const -Wert: Ganzzahl); geschützt {Geschützte Deklarationen} öffentlich {Öffentliche Erklärungen} Konstruktor create (aowner: tcomponent); überschreiben ; Zerstörer zerstören ; überschreiben ; veröffentlicht {Veröffentlichte Deklarationen} Eigenschaft Max: Integer Read fmax write setMax; Property Min: Ganzzahl lesen fMin write setmin; Eigenschaftsposition : Ganzzahl gelesene FPOSION Write SetPosition; Eigenschaft onchange: tnotifyEvent lesen fonchange write fonchange; Ende ; Verfahrensregister ; Implementierungsverfahren Register ; beginnen RegisterComponents ('Standard', [tupdownedit]); Ende ; {Tupdownedit} Constructor tupdownedit.create (Aowner: tcomponent); Beginnen Sie erbelt Create (Aowner); Setbounds (0, 0, 57, 21); Bearbeiten: = 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) oder es_number); Updown: = tupdown.create (self); Updown.height: = Höhe; // 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; Ende ; destructor tupdownedit.destroy; Beginnen Sie edit.free; Updown.free; geerbt ; Ende ; procedure tupdownedit.editchange (Absender: tobject); begin updown.position: = strtointdef (edit.text, 0); File: = updown.position; wenn zugewiesen (fonchange) dann fonchange (self); Ende ; procedure tupdownedit.editKeypress (Absender: tobject; var key: char); var S: Set von Char; I: Ganzzahl; STR, Text: String ; begin S: = [#8, '0' .. '9']; Wenn Key = #8 dann beenden; Wenn nicht (Schlüssel in s), beginnen Sie den Schlüssel: = #0; Ausfahrt; Ende ; //控制输入数字的大小Wenn TEDIT (Absender) .Sellength> 0 dann beginnen Sie Text: = Tedit (Absender) .Text; STR: = COPY (Text, 1, Tedit (Absender) .Selstart - 1) + Schlüssel + Kopie (Text, Tedit (Absender) .Selstart + Tedit (Absender) .Sellength + 1, Länge (Text)); i: = strtoint (str); Wenn i> fmax dann starten Sie Schlüssel: = #0; Ausfahrt; Ende ; Ende sonst , wenn Strtoint (TEDIT (Absender) .Text + Schlüssel)> Fmax dann beginne Taste: = #0; Ausfahrt; Ende sonst wenn Strtoint (TEDIT (Absender) .Text + Schlüssel) <fMin , dann starten Sie Schlüssel: = #0; Ausfahrt; Ende ; Ende ; procedure tupdownedit.setMax ( const value: Integer); fmax beginnen : = Wert; Updown.max: = fmax; Wenn Strtointdef (edit.text, 0)> fmax dann updown.position : = fmax; Edit.Text: = inttoStr (fmax); File: = updown.position; Ende ; Ende ; procedure tupdownedit.setmin ( const value: Integer); fmin beginnen : = Wert; Updown.min: = fmin; Wenn Strtointdef (edit.text, 0) <fMin dann updown.position : = fmin; Edit.Text: = inttoStr (fmin); File: = updown.position; wenn zugewiesen (fonchange) dann fonchange (self); Ende ; Ende ; procedure tupdownedit.setPosition ( const value: Integer); Beginnen Sie if if (value> = fmin) oder (Wert <= fmax), dann starten Sie fposition: = value; Updown.position: = fposition; Edit.Text: = inttoStr (fposition); wenn zugewiesen (fonchange) dann fonchange (self); Ende ; Ende ; procedure tupdownedit.updownclick (Absender: tobject; Schaltfläche: tudbtntype); Beginnen Sie, wenn max = 0 ist , dann starten Sie max: = 100; Updown.max: = max; Ende ; Updown.min: = min; Edit.Text: = inttoStr (updown.position); Edit.setfocus; Edit.Selectall; wenn zugewiesen (fonchange) dann fonchange (self); File: = updown.position; Ende ; procedure tupdownedit.wmSize ( var msg: twmSize); Beginnen Sie edit.width: = width - 15; Updown.left: = edit.width + 1; Updown.height: = Höhe; geerbt ; Ende ; Ende .