Bonjour,
j'essaie de transposer cette TForm Lazarus en FMX.
J'ai déjà posé ce genre de question. Malheureusement, la réponse de Serge de l'époque n'est absolument pas universelle... et extrêmement compliquée. Par exemple, si je décide de configurer par défaut un Linux en privilégiant un type de bureau qui définit sa propre couleur par exemple pour les éléments sélectionnés, je passe comment ?
Voici la partie déclaration de ma TForm Lazarus :
Et voici une partie du code de création de la TForm :
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 type { TAssociateComboclass } TcbCATGclass = class ID: string; end; TcbMARQclass = class ID: string; end; { TForm } TFCircularlst = class(TForm) cbCATG: TTMSFNCComboBox; cbMARQ: TComboBox; cbSTATE: TTMSFNCComboBox; laVERS: TLabel; Fimage: TTMSFNCBitmapContainer; ZR: TTMSFNCGrid; procedure FormCreate(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } fPRID, fCAID, fMAID: string; fSTATE: integer; end; const colID: integer = 0; colTITLE: integer = 1; colNUMINT: integer = 2; colPRICE: integer = 3; colSTATE: integer = 4; colIMAGE: integer = 5; colDATE: integer = 6; var FCircularlst: TFCircularlst; FData: TDataModulelz; fRES: TBDDres; FFontSize: integer; FRowSelected: integer; cbCATGclass: TcbCATGclass; cbMARQclass: TcbMARQclass; h, w: integer;
Transposé directement en FMX, j'obtiens ceci :
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 procedure TFCircularlst.FormCreate(Sender: TObject); begin FData := TDataModulelz.Create(nil); with FData.uConn do begin Server := cServer; Port := cPort; Database := cDataBase; Username := cUserName; Password := cPassWord; end; FRowSelected := 0; //FFontSize := GetDefaultFontSize(TForm(Sender)); zr.Appearance.ShowFocus := False; //h := GetSystemMetrics(SM_CYHSCROLL); //w := GetSystemMetrics(SM_CXVSCROLL); with zr.Appearance.FixedSelectedLayout.Fill do begin Color := clHighlight; Font.Color := clHighlightText; end; with zr.Appearance.FocusedLayout.Fill do begin Color := clHighlight; Font.Color := clHighlightText; end; end;
Rien de bien anormal. Mais il me faut contourner ce qui m'amène à plusieurs questions :
Je récupère puisque c'est multi-OS :
- la police par défaut de la Form pour l'appliquer si besoin à l'ensemble des composants graphiques. Vous allez me dire totalement inutile. Et je rappelle que j'affiche du HTML dans les cellules de la Grid peut avoir été saisi aussi bien sur un Mac OS, un Linux ou un Windows et même sur un portail WebDev. Il faut donc traiter le HTML pour l'intégrer à la taille de la police "naturelle" de la TForm sous l'OS qui le visualise.
- je ne parle pas des GetSystemMetrics qui me permettent de tenir compte de la largeur de l'épaisseur des scrollbars si j'ai besoin de faire des calculs de largeur correct de colonne par exemple.
- Mais mon premier souci, c'est le HightLight que je peux récupérer en Lazarus ce qui permet dans les TMSFNCGrid de TMS d'obtenir la bonne couleur de sélection automatiquement. Désolé Serge de reposer la question.
Concernant le Highligt, voici ce que cela donne sous Windows si j'enlève les codes assoviés à ZR dans le TForm.create :
Le bleu pastel conviendrait très bien sous Windows 10 mais pas sous Windows 11. Je vous laisse imaginer sous Ubuntu ou Mint et mac OS évidemment.
Donc concernant la Grid, je cherche au moins comme point de départ à atteindre au moins :
- respecter de la police de la Form dans toutes les cellules y compris les cellules HTML
- respecter des couleurs de base de l'OS [Font et background] aussi bien que la ligne soit sélectionnée ou pas
Evidemment, il n'est pas question que je crée un style Windows 10, un style Windows 11, un style mac OS 11, mac OS 12 avec un bureau sombre ou pas, Ubuntu xx avec tel bureau, avec tel autre,...
L'énorme avantage de Lazarus est qu'il "cause" (récupère) directement avec les objets natifs de l'OS. CE qui rend ce travail aisé.
Je ne cherche pas non plus à faire des concessions. Ce que je fais en Lazarus, j'estime pouvoir attendre de FMX la même capacité.
Une approche ? Merci. Gilles
Partager