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