1{ 2 ***************************************************************************** 3 * MUIWSSpin.pp * 4 * ------------ * 5 * * 6 * * 7 ***************************************************************************** 8 9 ***************************************************************************** 10 This file is part of the Lazarus Component Library (LCL) 11 12 See the file COPYING.modifiedLGPL.txt, included in this distribution, 13 for details about the license. 14 ***************************************************************************** 15} 16unit MUIWSSpin; 17 18{$mode objfpc}{$H+} 19 20interface 21 22uses 23 // RTL 24 SysUtils, Math, Classes, 25 // AROS 26 Mui, tagsparamshelper, 27 // LCL 28 Controls, LCLType, LCLProc, Spin, StdCtrls, 29 // Widgetset 30 MUIBaseUnit,MUIstdctrls, WSLCLClasses, WSProc, WSSpin; 31 32type 33 34 { TMUIWSCustomFloatSpinEdit } 35 36 TMUIWSCustomFloatSpinEdit = class(TWSCustomFloatSpinEdit) 37 published 38 class procedure GetPreferredSize(const AWinControl: TWinControl; 39 var PreferredWidth, PreferredHeight: integer; 40 WithThemeSpace: Boolean); override; 41 class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override; 42 class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override; 43 class function GetValue(const ACustomFloatSpinEdit: TCustomFloatSpinEdit): Double; override; 44 45 class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override; 46 class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override; 47 class procedure SetReadOnly(const ACustomEdit: TCustomEdit; ReadOnly: boolean); override; 48 49 class procedure UpdateControl(const ACustomFloatSpinEdit: TCustomFloatSpinEdit); override; 50 class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; 51 end; 52 53implementation 54 55 56{ TMUIWSCustomFloatSpinEdit } 57 58 59class procedure TMUIWSCustomFloatSpinEdit.GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); 60begin 61 PreferredHeight := 25; 62 PreferredWidth := AWinControl.Width; 63end; 64 65class function TMUIWSCustomFloatSpinEdit.GetSelStart(const ACustomEdit: TCustomEdit): integer; 66begin 67 Result := 0; 68end; 69 70class function TMUIWSCustomFloatSpinEdit.GetSelLength(const ACustomEdit: TCustomEdit): integer; 71//var 72// AStart, AEnd: Integer; 73begin 74 Result := 0; 75end; 76 77class function TMUIWSCustomFloatSpinEdit.GetValue( 78 const ACustomFloatSpinEdit: TCustomFloatSpinEdit): Double; 79var 80 Edit: TMuiSpinEdit; 81begin 82 if (ACustomFloatSpinEdit.Handle <> 0) and (TMUIObject(ACustomFloatSpinEdit.Handle) is TMUISpinEdit) then 83 begin 84 Edit := TMUISpinEdit(ACustomFloatSpinEdit.Handle); 85 Result := Edit.CurValue; 86 end; 87end; 88 89class procedure TMUIWSCustomFloatSpinEdit.SetSelStart(const ACustomEdit: TCustomEdit; 90 NewStart: integer); 91begin 92 // 93end; 94 95class procedure TMUIWSCustomFloatSpinEdit.SetSelLength(const ACustomEdit: TCustomEdit; 96 NewLength: integer); 97begin 98 // 99end; 100 101class procedure TMUIWSCustomFloatSpinEdit.SetReadOnly(const ACustomEdit: TCustomEdit; ReadOnly: boolean); 102begin 103 // 104end; 105 106class procedure TMUIWSCustomFloatSpinEdit.UpdateControl( 107 const ACustomFloatSpinEdit: TCustomFloatSpinEdit); 108var 109 Edit: TMuiSpinEdit; 110begin 111 if (ACustomFloatSpinEdit.Handle <> 0) and (TMUIObject(ACustomFloatSpinEdit.Handle) is TMUISpinEdit) then 112 begin 113 Edit := TMUISpinEdit(ACustomFloatSpinEdit.Handle); 114 Edit.CurValue := ACustomFloatSpinEdit.Value; 115 Edit.MinValue := ACustomFloatSpinEdit.MinValue; 116 Edit.MaxValue := ACustomFloatSpinEdit.MaxValue; 117 Edit.Increment := ACustomFloatSpinEdit.Increment; 118 Edit.Decimals := ACustomFloatSpinEdit.DecimalPlaces; 119 end; 120end; 121 122class function TMUIWSCustomFloatSpinEdit.CreateHandle( 123 const AWinControl: TWinControl; const AParams: TCreateParams 124 ): TLCLIntfHandle; 125var 126 MuiEdit: TMuiSpinEdit; 127 Tags: TATagList; 128 CEdit: TCustomFloatSpinEdit absolute AWinControl; 129begin 130 Tags.Clear; 131 MuiEdit := TMuiSpinEdit.Create(Tags); 132 With MuiEdit do 133 begin 134 Left := AParams.X; 135 Top := AParams.Y; 136 Width := AParams.Width; 137 Height := AParams.Height; 138 PasObject := AWinControl; 139 TabStop := AWinControl.TabStop; 140 Decimals := CEdit.DecimalPlaces; 141 CurValue := CEdit.Value; 142 MinValue := CEdit.MinValue; 143 MaxValue := CEdit.MaxValue; 144 Increment := CEdit.Increment; 145 end; 146 if AWinControl.Parent <> nil then 147 begin 148 MuiEdit.Parent := TMuiObject(AWinControl.Parent.Handle); 149 end; 150 // 151 Result := TLCLIntfHandle(MuiEdit); 152 // 153end; 154 155end. 156