-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathResponsividade.pas
101 lines (84 loc) · 2.89 KB
/
Responsividade.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
unit Responsividade;
interface
uses fmx.Controls, System.SysUtils, System.UITypes, FMX.Types;
type
TPadroes = array of Single;
TResponsivity = class
private
FarrayPadroes: array of Single;
Fobj: TControl;
Frelative: TControl;
Fpadroes: TPadroes;
procedure Setobj(const Value: TControl);
procedure Setrelative(const Value: TControl);
procedure Setpadroes(const Value: TPadroes);
published
property obj : TControl read Fobj write Setobj;
property relative : TControl read Frelative write Setrelative;
property padroes : TPadroes read Fpadroes write Setpadroes;
public
constructor Create(obj, Relative:TControl);
procedure responsive(parametros: array of String); overload;
procedure responsive; overload;
end;
implementation
{ TResponsive }
constructor TResponsivity.Create(obj,relative:TControl);
begin
Setpadroes([obj.Width, obj.Height, obj.Position.X, obj.Position.Y,
relative.Width, relative.Height]);
self.obj:=obj;
self.relative:=relative;
end;
procedure TResponsivity.responsive(parametros: array of String);
var i:integer;
begin
self.obj.Anchors:= [TAnchorKind.akLeft, TAnchorKind.akTop];
for i:= 0 to length(parametros) do
begin
if parametros[i] = 'width' then
begin
self.obj.Width:=(self.relative.Width*(self.padroes[0]/self.padroes[4]));
end else
if parametros[i] = 'heigth' then
begin
self.obj.height:=(self.relative.height*(self.padroes[1]/self.padroes[5]));
end else
if parametros[i]= 'posx' then
begin
self.obj.position.x:=(self.relative.width*(self.padroes[2]/self.padroes[4]));
end else
if parametros[i] = 'posy' then
begin
self.obj.position.y:=(self.relative.height*(self.padroes[3]/self.padroes[5]));
end else
if parametros[i] ='todos' then
begin
self.obj.Width := (self.relative.Width*(self.padroes[0]/self.padroes[4]));
self.obj.height := (self.relative.height*(self.padroes[1]/self.padroes[5]));
self.obj.position.x := (self.relative.width*(self.padroes[2]/self.padroes[4]));
self.obj.position.y := (self.relative.height*(self.padroes[3]/self.padroes[5]));
end;
end;
end;
procedure TResponsivity.responsive;
begin
self.obj.Anchors:= [TAnchorKind.akLeft, TAnchorKind.akTop];
self.obj.Width := (self.relative.Width*(self.padroes[0]/self.padroes[4]));
self.obj.height := (self.relative.height*(self.padroes[1]/self.padroes[5]));
self.obj.position.x := (self.relative.width*(self.padroes[2]/self.padroes[4]));
self.obj.position.y := (self.relative.height*(self.padroes[3]/self.padroes[5]));
end;
procedure TResponsivity.Setobj(const Value: TControl);
begin
Fobj := Value;
end;
procedure TResponsivity.Setpadroes(const Value: TPadroes);
begin
Fpadroes := Value;
end;
procedure TResponsivity.Setrelative(const Value: TControl);
begin
Frelative := Value;
end;
end.