Oui, je posais ce genre de question un post plus loin : http://www.developpez.net/forums/d12...entre-fmx-vcl/
Mais c'est ce que je refuse de plus en plus avec Lazarus : rentrer dans la machinerie pour... simplement traduire ou effectuer une simple tâche. J'ai vu que les Hint avait disparu en FMX, qu'on retournait à FastReport quand j'utilisais Rave, ... ?
Je me moque des RTTIs et comment ils sont utilisés. Mais s'il faut que je rentre dedans pour internationaliser mes projets alors je vais voir ailleurs.
Ensuite FMX, l'excuse de l'âge je ne prends pas : d'abord ils ont du recul (Kylix). vgScene existe depuis Delphi 7 et peut-ête même avant... Mais, je ne veux pas vous ennuyer plus et je pense que nos points de vue sont inconciliables. Je voulais simplement m'informer. FMX est comme il est et je ne critique pas. Il a ses supporters et tant mieux. J'ai un choix à faire. Ce que j'ai lu m'a interpellé. J'ai posé une question complémentaire dans votre forum, ayant "peur" de mal comprendre.
Simplement, je sais qu'en Delphi (et en VCL) on peut "tout" faire. Mais je n'ai pas envie en Delphi de me remettre au niveau du C (voire ++). Visiblement c'est une approche qui vous est familière. Je suis un simple programmeur, pas un "technos" : je cherche une plateforme de production. Comme l'écrivait Paul, il y a peu, on peut devoir et pouvoir produire sans rentrer dans l'OS, ni dans les arcanes de l'IDE ou du Pascal. Enfin, c'est mon approche et mon souhait actuels.
Maintenant si je peux aller au bout de ma pensée : sortir l'arme nucléaire pour faire apparaître une simple bulle d'aide... et si j'ai bien compris pas exactement à l'endroit souhaité, c'est 2 fois non : 1. parce qu'il faut produire son propre code pour cette simple fonction 2. parce qu'il n'y a aucune raison, que la bulle ne soit pas à la place que j'ai décidé. Ce genre de contrainte est tout à fait inacceptable dans un "nouveau' (2ans ) langage. Par contre évidemment, cela valorise votre approche. Ce qui ne me gêne absolument pas, soyez en rassuré.
Cordialement. Gilles
PS : Simplement pour vous montrer combien nos approches sont différentes :
Pour des
Label1 Edit1
Label2 Edit2... et leur alignement en fonction des diverses langues, 2 simples TPanels (1 pour la col. des TLabels, l'autre pour la col. des TEdits) règlent le problème sans aucune ligne de programmation :
On incorpore les Labels dans le Panel1. Le Panel1.Autosize, les Label1.Autosize, Label2.Autosize --> True. Ainsi, le problème est réglé pour la largeur. Pour la hauteur, il suffit dans le panel des TLabels d'aligner verticalement toujours avec ancrage, par exemple des TImages vides (Width := 0; Height := 23). Je centre verticalement ensuite toujours avec ancrage, les TLabels sur les TImages... même si ce n'est pas des TImages que j'utilise. Cela prend 30 secondes. Les traductions sont faites par des personnes étrangères au programme (à partir de l'anglais) sur mes fichiers.po. Je ne sais pas si les RTTI interviennent et m'en moque complètement si je peux me permettre Cette méthade présente l'avantage de ne pas avoir à repérer quel est le TLabel le plus long pour y faire "reposer" l'ancrage des Tedits, quelque soit la langue, la Font utilisée puisque cela se fait automatiquement. Un simple copier-coller d'une forme à l'autre ou un reciopage d'une partie des .lfm et le temps gagné est important... Il faudrait presqu'en faire un composant. Là d'accord, j'accepte de mettre les mains dans la machine parce qu'en terme de production, j'y gagne... mais pas d'accord pour les rustinages (Aïe Lazarus) et l'artillerie lourde pour des fonctions simples (Aïe FMX)...
unit1.lfm du genre :
Et le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 object Form1: TForm1 Left = 238 Height = 240 Top = 145 Width = 556 Caption = 'Form1' ClientHeight = 240 ClientWidth = 556 OnCreate = FormCreate LCLVersion = '1.1' object Panel1: TPanel Left = 32 Height = 48 Top = 45 Width = 37 AutoSize = True Caption = 'Panel1' ClientHeight = 48 ClientWidth = 37 TabOrder = 0 object Label1: TLabel AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Image1 AnchorSideTop.Side = asrCenter Left = 1 Height = 16 Top = 4 Width = 35 Caption = 'Label1' ParentColor = False end object Label2: TLabel AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Image2 AnchorSideTop.Side = asrCenter Left = 1 Height = 16 Top = 27 Width = 35 Caption = 'Label2' ParentColor = False end object Image1: TImage AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Panel1 Left = 1 Height = 23 Top = 1 Width = 0 end object Image2: TImage AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Image1 AnchorSideTop.Side = asrBottom Left = 1 Height = 23 Top = 24 Width = 0 end end object Panel2: TPanel AnchorSideLeft.Control = Panel1 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel1 Left = 69 Height = 50 Top = 45 Width = 170 Caption = 'Panel2' ClientHeight = 50 ClientWidth = 170 TabOrder = 1 object Edit1: TEdit AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = Panel2 Left = 1 Height = 23 Top = 1 Width = 80 TabOrder = 0 Text = 'Edit1' end object Edit2: TEdit AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = Edit1 AnchorSideTop.Side = asrBottom Left = 1 Height = 23 Top = 24 Width = 80 TabOrder = 1 Text = 'Edit2' end end end
RQ : Dans l'exemple ci-dessus le Panel2 n'est pas réellement nécessaire même s'il simplifie la vie. Il permet surtout d'aligner d'autres colonnes (à sa droite) facilement et selon le même principe. J'allais oublier quand même : on obtient le même résultat avec le même code sous Win et Nux
Partager