BaiduFMX

Форк
0
/
FMXComponentsDemoMain.pas 
385 строк · 11.6 Кб
1
unit FMXComponentsDemoMain;
2

3
interface
4

5
uses
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;
16

17
type
18
  TFMXComponentsDemoForm = class(TForm)
19
    Layout16: TLayout;
20
    Layout3: TLayout;
21
    Line1: TLine;
22
    Line4: TLine;
23
    FMXScrollableList2: TFMXScrollableList;
24
    Label1: TLabel;
25
    LayoutYears: TLayout;
26
    Layout2: TLayout;
27
    Line2: TLine;
28
    Line3: TLine;
29
    FMXScrollableList1: TFMXScrollableList;
30
    Label2: TLabel;
31
    FMXRatingBar1: TFMXRatingBar;
32
    btnAnimation: TButton;
33
    FloatAnimation1: TFloatAnimation;
34
    FMXCircleScoreIndicator1: TFMXCircleScoreIndicator;
35
    FloatAnimation2: TFloatAnimation;
36
    Layout4: TLayout;
37
    Layout5: TLayout;
38
    Line5: TLine;
39
    Line6: TLine;
40
    FMXScrollableList3: TFMXScrollableList;
41
    Label3: TLabel;
42
    TabControl1: TTabControl;
43
    tabBasic: TTabItem;
44
    tabSlider: TTabItem;
45
    Image1: TImage;
46
    Image2: TImage;
47
    Image3: TImage;
48
    Image4: TImage;
49
    FMXImageSlider1: TFMXImageSlider;
50
    FloatAnimation3: TFloatAnimation;
51
    tabBBCode: TTabItem;
52
    Memo1: TMemo;
53
    Layout1: TLayout;
54
    FMXSimpleBBCodeText1: TFMXSimpleBBCodeText;
55
    tabGesturePassword: TTabItem;
56
    Layout6: TLayout;
57
    FMXGesturePassword1: TFMXGesturePassword;
58
    lbl1: TLabel;
59
    lblPassword: TLabel;
60
    tabCalendarControl: TTabItem;
61
    FMXCalendarControl1: TFMXCalendarControl;
62
    Layout7: TLayout;
63
    chkShowLunarDate: TCheckBox;
64
    rbCnMonths: TRadioButton;
65
    rbEnMonths: TRadioButton;
66
    Rectangle1: TRectangle;
67
    Rectangle2: TRectangle;
68
    txtCnDate1: TText;
69
    txtCnDate2: TText;
70
    tabSeg7Shape: TTabItem;
71
    Button1: TButton;
72
    tmr1: TTimer;
73
    Seg7Shape1: TFMXSeg7Shape;
74
    Seg7Shape2: TFMXSeg7Shape;
75
    FMXRatingBar2: TFMXRatingBar;
76
    FloatAnimation4: TFloatAnimation;
77
    txtScore: TLabel;
78
    tabToast: TTabItem;
79
    Label4: TLabel;
80
    FMXToast1: TFMXToast;
81
    btnShowToast: TButton;
82
    chkToastIsBlock: TCheckBox;
83
    edtToastMessage: TEdit;
84
    Label7: TLabel;
85
    GroupBox1: TGroupBox;
86
    rbToastTop: TRadioButton;
87
    rbToastCenter: TRadioButton;
88
    rbToastBottom: TRadioButton;
89
    cpFontColor: TColorPanel;
90
    Label5: TLabel;
91
    cpBackColor: TColorPanel;
92
    Label6: TLabel;
93
    tabQRCode: TTabItem;
94
    FMXQRCode1: TFMXQRCode;
95
    Label8: TLabel;
96
    Memo2: TMemo;
97
    BindingsList1: TBindingsList;
98
    cpQRCodeForeColor: TColorPanel;
99
    Label10: TLabel;
100
    cpQRCodeBackColor: TColorPanel;
101
    Label9: TLabel;
102
    Label11: TLabel;
103
    nbQuiteZone: TNumberBox;
104
    Label12: TLabel;
105
    nbQRCodeSize: TNumberBox;
106
    Rectangle3: TRectangle;
107
    Label13: TLabel;
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);
134
  private
135
    { Private declarations }
136
    FSelection1: TOneSelection;
137
    ShuffleCount : Byte;
138
    FToastCount: Integer;
139
    procedure RollSegment(Sender: TObject ; Data : Byte );
140
    procedure RollSegmentSet( Count : Byte);
141
  public
142
    { Public declarations }
143
  end;
144

145
var
146
  FMXComponentsDemoForm: TFMXComponentsDemoForm;
147

148
implementation
149

150
{$R *.fmx}
151

152
procedure TFMXComponentsDemoForm.btnAnimationClick(Sender: TObject);
153
begin
154
  FloatAnimation1.Start;
155
  FloatAnimation2.Start;
156
  FloatAnimation4.Start;
157
end;
158

159
procedure TFMXComponentsDemoForm.btnShowToastClick(Sender: TObject);
160
begin
161
  FMXToast1.ToastMessage := edtToastMessage.Text + FToastCount.ToString;
162
  Inc(FToastCount);
163
  FMXToast1.Show(Self);
164
end;
165

166
procedure TFMXComponentsDemoForm.Button1Click(Sender: TObject);
167
begin
168
  tmr1.Enabled  := TRUE;
169
  Button1.Enabled := False;
170
  ShuffleCount     := 17;
171
  Seg7Shape1.Num  := $ff;
172
  Seg7Shape2.Num  := $ff;
173
  Randomize;
174
  Seg7Shape1.Fill.Color := Seg7Shape1.Fill.Color + Random($ffffffff);
175
  Seg7Shape2.Fill.Color := Seg7Shape1.Fill.Color + Random($ffffffff);
176
  RollSegmentSet( ShuffleCount );
177
end;
178

179
procedure TFMXComponentsDemoForm.chkShowLunarDateChange(Sender: TObject);
180
begin
181
  FMXCalendarControl1.IsShowLunarDate := chkShowLunarDate.IsChecked;
182
end;
183

184
procedure TFMXComponentsDemoForm.chkToastIsBlockChange(Sender: TObject);
185
begin
186
  FMXToast1.IsBlock := chkToastIsBlock.IsChecked;
187
end;
188

189
procedure TFMXComponentsDemoForm.cpBackColorChange(Sender: TObject);
190
begin
191
  FMXToast1.BackColor := cpBackColor.Color;
192
end;
193

194
procedure TFMXComponentsDemoForm.cpFontColorChange(Sender: TObject);
195
begin
196
  FMXToast1.FontColor := cpFontColor.Color;
197
end;
198

199
procedure TFMXComponentsDemoForm.cpQRCodeBackColorChange(Sender: TObject);
200
begin
201
  FMXQRCode1.BackGround := cpQRCodeBackColor.Color;
202
end;
203

204
procedure TFMXComponentsDemoForm.cpQRCodeForeColorChange(Sender: TObject);
205
begin
206
  FMXQRCode1.ForeGround := cpQRCodeForeColor.Color;
207
end;
208

209
procedure TFMXComponentsDemoForm.FloatAnimation2Process(Sender: TObject);
210
begin
211
  txtScore.Text := IntToStr(Round(FMXCircleScoreIndicator1.Value));
212
end;
213

214
procedure TFMXComponentsDemoForm.FMXCalendarControl1SelectedItem(
215
  Sender: TObject);
216
var
217
  D: TCalendarDate;
218
  Year, Month, Day: Word;
219
begin
220
  DecodeDate(FMXCalendarControl1.SelectedDate, Year, Month, Day);
221
  D := ToCnDate(FMXCalendarControl1.SelectedDate);
222
  txtCnDate1.Text := Format('ũ��%s%s', [CnMonthName(D), CnDayName(D)]);
223
  txtCnDate2.Text :=
224
    GetGanZhiFromNumber(GetGanZhiFromYear(Year)) +
225
    GetShengXiaoFromNumber(D.Year) + '�� ' +
226
    GetGanZhiFromNumber(GetGanZhiFromMonth(Year, Month, Day)) + '�� ' +
227
    GetGanZhiFromNumber(GetGanZhiFromDay(Year, Month, Day)) + '��';
228
end;
229

230
procedure TFMXComponentsDemoForm.FMXGesturePassword1EnterCompleteEvent(
231
  Sender: TObject; const APassword: string);
232
begin
233
  lblPassword.Text := self.FMXGesturePassword1.Password;
234
end;
235

236
procedure TFMXComponentsDemoForm.FMXScrollableList1Change(Sender: TObject);
237
begin
238
  Label1.Text := FMXScrollableList1.GetSelected;
239
end;
240

241
procedure TFMXComponentsDemoForm.FMXScrollableList2Change(Sender: TObject);
242
begin
243
  Label2.Text := FMXScrollableList2.GetSelected;
244
end;
245

246
procedure TFMXComponentsDemoForm.FMXScrollableList3Change(Sender: TObject);
247
begin
248
  Label3.Text := FMXScrollableList3.GetSelected;
249
end;
250

251
procedure TFMXComponentsDemoForm.FMXSimpleBBCodeText1Click(Sender: TObject);
252
var
253
  c: TControl;
254
begin
255
  if FSelection1.ChildrenCount > 0 then
256
  begin
257
    c := TControl(FSelection1.Children[0]);
258
    c.HitTest := True;
259
    c.Align := TAlignLayout.None;
260
    c.Parent := Layout1;
261
    c.BoundsRect := FSelection1.BoundsRect;
262
    c.Position.Point := FSelection1.Position.Point;
263
  end;
264

265
  FSelection1.BoundsRect := TControl(Sender).BoundsRect;
266
  FSelection1.Position.Point := TControl(Sender).Position.Point;
267
  FSelection1.Visible := True;
268
  FSelection1.BringToFront;
269

270
  TControl(Sender).Parent := FSelection1;
271
  TControl(Sender).Align := TAlignLayout.Client;
272
  TControl(Sender).HitTest := False;
273
end;
274

275
procedure TFMXComponentsDemoForm.FormCreate(Sender: TObject);
276
begin
277
  Label1.Text := FMXScrollableList1.GetSelected;
278
  Label2.Text := FMXScrollableList2.GetSelected;
279
  Label3.Text := FMXScrollableList3.GetSelected;
280

281
  FMXImageSlider1.SetPage(0, Image1);
282
  FMXImageSlider1.SetPage(1, Image2);
283
  FMXImageSlider1.SetPage(2, Image3);
284
  FMXImageSlider1.SetPage(3, Image4);
285

286
  FSelection1 := TOneSelection.Create(Self);
287
  FSelection1.GripSize := 8;
288
  FSelection1.Proportional := False;
289
  Layout1.AddObject(FSelection1);
290

291
  FMXSimpleBBCodeText1Click(FMXSimpleBBCodeText1);
292

293
  txtCnDate1.Text := '';
294
  txtCnDate2.Text := '';
295

296
  FToastCount := 1;
297
end;
298

299
procedure TFMXComponentsDemoForm.FormResize(Sender: TObject);
300
begin
301
  FMXImageSlider1.Height := ClientWidth * 200 / 320;
302
end;
303

304
procedure TFMXComponentsDemoForm.Memo1Change(Sender: TObject);
305
begin
306
  self.FMXSimpleBBCodeText1.Lines.Assign(Memo1.Lines);
307
end;
308

309
procedure TFMXComponentsDemoForm.Memo2Change(Sender: TObject);
310
begin
311
  FMXQRCode1.Lines := Memo2.Lines;
312
end;
313

314
procedure TFMXComponentsDemoForm.nbQRCodeSizeChange(Sender: TObject);
315
begin
316
  FMXQRCode1.IconSize.Size := TSizeF.Create(nbQRCodeSize.Value, nbQRCodeSize.Value);
317
end;
318

319
procedure TFMXComponentsDemoForm.nbQuiteZoneChange(Sender: TObject);
320
begin
321
  FMXQRCode1.QuiteZone := Round(nbQuiteZone.Value);
322
end;
323

324
procedure TFMXComponentsDemoForm.rbCnMonthsChange(Sender: TObject);
325
begin
326
  if (Sender as TControl).Tag = 0 then
327
    Self.FMXCalendarControl1.SetMonthNames(TCnMonths)
328
  else
329
    Self.FMXCalendarControl1.SetMonthNames(TEnMonths);
330
end;
331

332
procedure TFMXComponentsDemoForm.rbToastTopChange(Sender: TObject);
333
begin
334
  if rbToastTop.IsChecked then
335
    FMXToast1.Align := TTextAlign.Leading
336
  else if rbToastCenter.IsChecked then
337
    FMXToast1.Align := TTextAlign.Center
338
  else
339
    FMXToast1.Align := TTextAlign.Trailing
340
end;
341

342
procedure TFMXComponentsDemoForm.RollSegment(Sender: TObject; Data: Byte);
343
begin
344
  (Sender as TFMXSeg7Shape).Data := Data;
345
end;
346

347
procedure TFMXComponentsDemoForm.RollSegmentSet(Count: Byte);
348
begin
349
  case Count of
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;
358
  end;
359

360
end;
361

362
procedure TFMXComponentsDemoForm.tmr1Timer(Sender: TObject);
363
var
364
    RandData: Byte;
365
begin
366
  if (ShuffleCount = 0) then
367
  begin
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;
375
  end
376
  else
377
  begin
378
    Seg7Shape1.Fill.Color := Seg7Shape1.Fill.Color + Random($FFFFFFFF);
379
    Seg7Shape2.Fill.Color := Seg7Shape1.Fill.Color + Random($FFFFFFFF);
380
    Dec(ShuffleCount);
381
    RollSegmentSet(ShuffleCount);
382
  end;
383
end;
384

385
end.
386

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.