1
unit FMXComponentsDemoMain;
6
System.SysUtils, System.Types, System.UITypes, System.Classes,
7
System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
8
FMX.Objects, FMX.Layouts,
9
FMX.StdCtrls, FMX.Controls.Presentation, FMX.ScrollableList, FMX.RatingBar,
10
FMX.Ani, FMX.CircleScoreIndicator, FMX.TabControl, FMX.ImageSlider,
11
FMX.ScrollBox, FMX.Memo, FMX.SimpleBBCodeText, ONE.Objects, Data.Bind.EngExt,
12
Fmx.Bind.DBEngExt, System.Rtti, System.Bindings.Outputs, Fmx.Bind.Editors,
13
Data.Bind.Components, FMX.GesturePassword, FMX.CalendarControl,
14
qcndate, CnCalendar, FMX.Seg7Shape, FMX.Toast, FMX.Colors, FMX.Edit,
15
FMX.QRCode, FMX.EditBox, FMX.NumberBox, FMX.Memo.Types;
18
TFMXComponentsDemoForm = class(TForm)
23
FMXScrollableList2: TFMXScrollableList;
29
FMXScrollableList1: TFMXScrollableList;
31
FMXRatingBar1: TFMXRatingBar;
32
btnAnimation: TButton;
33
FloatAnimation1: TFloatAnimation;
34
FMXCircleScoreIndicator1: TFMXCircleScoreIndicator;
35
FloatAnimation2: TFloatAnimation;
40
FMXScrollableList3: TFMXScrollableList;
42
TabControl1: TTabControl;
49
FMXImageSlider1: TFMXImageSlider;
50
FloatAnimation3: TFloatAnimation;
54
FMXSimpleBBCodeText1: TFMXSimpleBBCodeText;
55
tabGesturePassword: TTabItem;
57
FMXGesturePassword1: TFMXGesturePassword;
60
tabCalendarControl: TTabItem;
61
FMXCalendarControl1: TFMXCalendarControl;
63
chkShowLunarDate: TCheckBox;
64
rbCnMonths: TRadioButton;
65
rbEnMonths: TRadioButton;
66
Rectangle1: TRectangle;
67
Rectangle2: TRectangle;
70
tabSeg7Shape: TTabItem;
73
Seg7Shape1: TFMXSeg7Shape;
74
Seg7Shape2: TFMXSeg7Shape;
75
FMXRatingBar2: TFMXRatingBar;
76
FloatAnimation4: TFloatAnimation;
81
btnShowToast: TButton;
82
chkToastIsBlock: TCheckBox;
83
edtToastMessage: TEdit;
86
rbToastTop: TRadioButton;
87
rbToastCenter: TRadioButton;
88
rbToastBottom: TRadioButton;
89
cpFontColor: TColorPanel;
91
cpBackColor: TColorPanel;
94
FMXQRCode1: TFMXQRCode;
97
BindingsList1: TBindingsList;
98
cpQRCodeForeColor: TColorPanel;
100
cpQRCodeBackColor: TColorPanel;
103
nbQuiteZone: TNumberBox;
105
nbQRCodeSize: TNumberBox;
106
Rectangle3: TRectangle;
108
procedure FMXScrollableList2Change(Sender: TObject);
109
procedure FMXScrollableList1Change(Sender: TObject);
110
procedure btnAnimationClick(Sender: TObject);
111
procedure FormCreate(Sender: TObject);
112
procedure FMXScrollableList3Change(Sender: TObject);
113
procedure FormResize(Sender: TObject);
114
procedure FMXSimpleBBCodeText1Click(Sender: TObject);
115
procedure Memo1Change(Sender: TObject);
116
procedure FMXGesturePassword1EnterCompleteEvent(Sender: TObject;
117
const APassword: string);
118
procedure chkShowLunarDateChange(Sender: TObject);
119
procedure rbCnMonthsChange(Sender: TObject);
120
procedure FMXCalendarControl1SelectedItem(Sender: TObject);
121
procedure Button1Click(Sender: TObject);
122
procedure tmr1Timer(Sender: TObject);
123
procedure FloatAnimation2Process(Sender: TObject);
124
procedure btnShowToastClick(Sender: TObject);
125
procedure chkToastIsBlockChange(Sender: TObject);
126
procedure rbToastTopChange(Sender: TObject);
127
procedure cpFontColorChange(Sender: TObject);
128
procedure cpBackColorChange(Sender: TObject);
129
procedure Memo2Change(Sender: TObject);
130
procedure cpQRCodeForeColorChange(Sender: TObject);
131
procedure cpQRCodeBackColorChange(Sender: TObject);
132
procedure nbQuiteZoneChange(Sender: TObject);
133
procedure nbQRCodeSizeChange(Sender: TObject);
135
{ Private declarations }
136
FSelection1: TOneSelection;
138
FToastCount: Integer;
139
procedure RollSegment(Sender: TObject ; Data : Byte );
140
procedure RollSegmentSet( Count : Byte);
142
{ Public declarations }
146
FMXComponentsDemoForm: TFMXComponentsDemoForm;
152
procedure TFMXComponentsDemoForm.btnAnimationClick(Sender: TObject);
154
FloatAnimation1.Start;
155
FloatAnimation2.Start;
156
FloatAnimation4.Start;
159
procedure TFMXComponentsDemoForm.btnShowToastClick(Sender: TObject);
161
FMXToast1.ToastMessage := edtToastMessage.Text + FToastCount.ToString;
163
FMXToast1.Show(Self);
166
procedure TFMXComponentsDemoForm.Button1Click(Sender: TObject);
168
tmr1.Enabled := TRUE;
169
Button1.Enabled := False;
171
Seg7Shape1.Num := $ff;
172
Seg7Shape2.Num := $ff;
174
Seg7Shape1.Fill.Color := Seg7Shape1.Fill.Color + Random($ffffffff);
175
Seg7Shape2.Fill.Color := Seg7Shape1.Fill.Color + Random($ffffffff);
176
RollSegmentSet( ShuffleCount );
179
procedure TFMXComponentsDemoForm.chkShowLunarDateChange(Sender: TObject);
181
FMXCalendarControl1.IsShowLunarDate := chkShowLunarDate.IsChecked;
184
procedure TFMXComponentsDemoForm.chkToastIsBlockChange(Sender: TObject);
186
FMXToast1.IsBlock := chkToastIsBlock.IsChecked;
189
procedure TFMXComponentsDemoForm.cpBackColorChange(Sender: TObject);
191
FMXToast1.BackColor := cpBackColor.Color;
194
procedure TFMXComponentsDemoForm.cpFontColorChange(Sender: TObject);
196
FMXToast1.FontColor := cpFontColor.Color;
199
procedure TFMXComponentsDemoForm.cpQRCodeBackColorChange(Sender: TObject);
201
FMXQRCode1.BackGround := cpQRCodeBackColor.Color;
204
procedure TFMXComponentsDemoForm.cpQRCodeForeColorChange(Sender: TObject);
206
FMXQRCode1.ForeGround := cpQRCodeForeColor.Color;
209
procedure TFMXComponentsDemoForm.FloatAnimation2Process(Sender: TObject);
211
txtScore.Text := IntToStr(Round(FMXCircleScoreIndicator1.Value));
214
procedure TFMXComponentsDemoForm.FMXCalendarControl1SelectedItem(
218
Year, Month, Day: Word;
220
DecodeDate(FMXCalendarControl1.SelectedDate, Year, Month, Day);
221
D := ToCnDate(FMXCalendarControl1.SelectedDate);
222
txtCnDate1.Text := Format('ũ��%s%s', [CnMonthName(D), CnDayName(D)]);
224
GetGanZhiFromNumber(GetGanZhiFromYear(Year)) +
225
GetShengXiaoFromNumber(D.Year) + '�� ' +
226
GetGanZhiFromNumber(GetGanZhiFromMonth(Year, Month, Day)) + '�� ' +
227
GetGanZhiFromNumber(GetGanZhiFromDay(Year, Month, Day)) + '��';
230
procedure TFMXComponentsDemoForm.FMXGesturePassword1EnterCompleteEvent(
231
Sender: TObject; const APassword: string);
233
lblPassword.Text := self.FMXGesturePassword1.Password;
236
procedure TFMXComponentsDemoForm.FMXScrollableList1Change(Sender: TObject);
238
Label1.Text := FMXScrollableList1.GetSelected;
241
procedure TFMXComponentsDemoForm.FMXScrollableList2Change(Sender: TObject);
243
Label2.Text := FMXScrollableList2.GetSelected;
246
procedure TFMXComponentsDemoForm.FMXScrollableList3Change(Sender: TObject);
248
Label3.Text := FMXScrollableList3.GetSelected;
251
procedure TFMXComponentsDemoForm.FMXSimpleBBCodeText1Click(Sender: TObject);
255
if FSelection1.ChildrenCount > 0 then
257
c := TControl(FSelection1.Children[0]);
259
c.Align := TAlignLayout.None;
261
c.BoundsRect := FSelection1.BoundsRect;
262
c.Position.Point := FSelection1.Position.Point;
265
FSelection1.BoundsRect := TControl(Sender).BoundsRect;
266
FSelection1.Position.Point := TControl(Sender).Position.Point;
267
FSelection1.Visible := True;
268
FSelection1.BringToFront;
270
TControl(Sender).Parent := FSelection1;
271
TControl(Sender).Align := TAlignLayout.Client;
272
TControl(Sender).HitTest := False;
275
procedure TFMXComponentsDemoForm.FormCreate(Sender: TObject);
277
Label1.Text := FMXScrollableList1.GetSelected;
278
Label2.Text := FMXScrollableList2.GetSelected;
279
Label3.Text := FMXScrollableList3.GetSelected;
281
FMXImageSlider1.SetPage(0, Image1);
282
FMXImageSlider1.SetPage(1, Image2);
283
FMXImageSlider1.SetPage(2, Image3);
284
FMXImageSlider1.SetPage(3, Image4);
286
FSelection1 := TOneSelection.Create(Self);
287
FSelection1.GripSize := 8;
288
FSelection1.Proportional := False;
289
Layout1.AddObject(FSelection1);
291
FMXSimpleBBCodeText1Click(FMXSimpleBBCodeText1);
293
txtCnDate1.Text := '';
294
txtCnDate2.Text := '';
299
procedure TFMXComponentsDemoForm.FormResize(Sender: TObject);
301
FMXImageSlider1.Height := ClientWidth * 200 / 320;
304
procedure TFMXComponentsDemoForm.Memo1Change(Sender: TObject);
306
self.FMXSimpleBBCodeText1.Lines.Assign(Memo1.Lines);
309
procedure TFMXComponentsDemoForm.Memo2Change(Sender: TObject);
311
FMXQRCode1.Lines := Memo2.Lines;
314
procedure TFMXComponentsDemoForm.nbQRCodeSizeChange(Sender: TObject);
316
FMXQRCode1.IconSize.Size := TSizeF.Create(nbQRCodeSize.Value, nbQRCodeSize.Value);
319
procedure TFMXComponentsDemoForm.nbQuiteZoneChange(Sender: TObject);
321
FMXQRCode1.QuiteZone := Round(nbQuiteZone.Value);
324
procedure TFMXComponentsDemoForm.rbCnMonthsChange(Sender: TObject);
326
if (Sender as TControl).Tag = 0 then
327
Self.FMXCalendarControl1.SetMonthNames(TCnMonths)
329
Self.FMXCalendarControl1.SetMonthNames(TEnMonths);
332
procedure TFMXComponentsDemoForm.rbToastTopChange(Sender: TObject);
334
if rbToastTop.IsChecked then
335
FMXToast1.Align := TTextAlign.Leading
336
else if rbToastCenter.IsChecked then
337
FMXToast1.Align := TTextAlign.Center
339
FMXToast1.Align := TTextAlign.Trailing
342
procedure TFMXComponentsDemoForm.RollSegment(Sender: TObject; Data: Byte);
344
(Sender as TFMXSeg7Shape).Data := Data;
347
procedure TFMXComponentsDemoForm.RollSegmentSet(Count: Byte);
350
17,9,1 : begin RollSegment(Seg7Shape1 , $01 ); RollSegment(Seg7Shape2 , $01 ); end;
351
16,8 : begin RollSegment(Seg7Shape1 , $00 ); RollSegment(Seg7Shape2 , $03 ); end;
352
15,7 : begin RollSegment(Seg7Shape1 , $00 ); RollSegment(Seg7Shape2 , $06 ); end;
353
14,6 : begin RollSegment(Seg7Shape1 , $00 ); RollSegment(Seg7Shape2 , $0C ); end;
354
13,5 : begin RollSegment(Seg7Shape1 , $08 ); RollSegment(Seg7Shape2 , $08 ); end;
355
12,4 : begin RollSegment(Seg7Shape1 , $18 ); RollSegment(Seg7Shape2 , $00 ); end;
356
11,3 : begin RollSegment(Seg7Shape1 , $30 ); RollSegment(Seg7Shape2 , $00 ); end;
357
10,2 : begin RollSegment(Seg7Shape1 , $21 ); RollSegment(Seg7Shape2 , $00 ); end;
362
procedure TFMXComponentsDemoForm.tmr1Timer(Sender: TObject);
366
if (ShuffleCount = 0) then
368
RandData := Random(100);
369
Seg7Shape1.Num := RandData mod 10;
370
Seg7Shape2.Num := RandData div 10;
371
tmr1.Enabled := False;
372
Button1.Enabled := TRUE;
373
Seg7Shape1.Fill.Color := TAlphaColorRec.Blue;
374
Seg7Shape2.Fill.Color := TAlphaColorRec.Blue;
378
Seg7Shape1.Fill.Color := Seg7Shape1.Fill.Color + Random($FFFFFFFF);
379
Seg7Shape2.Fill.Color := Seg7Shape1.Fill.Color + Random($FFFFFFFF);
381
RollSegmentSet(ShuffleCount);