Bonjour,
Dans mes essais de passage a FMX (version XE4) , je transpose un "simple" programme de sélection d'enregistrements (via case a cocher) et je bute sur la navigation dans la sélection .
1°Constatation quelle galère pour tailler les colonnes au design
Dans un premier temps , j'avais ajouter un champ booléen à la liste de mes champs pour avoir une colonne case à cocher : dans ce cas ci , je dirais pas de soucis , il suffit de naviguer dans la table pour se positionner sur les enregistrements 'sélectionnés'
Puis j'ai voulu faire un essai (dans l'esprit : simplifions , simplifions) en mettant la case a cocher dans une colonne fixe sans champ supplémentaire (après avoir pas mal fouillé dans la doc de TMSFMXGrid)
j'ai là aussi pas mal galérer avec l'option SelectionMode pour finalement avoir une solution simple : sans utiliser le système de sélection de TMS (smNone)
pour les curieux
J'en arrive à ma question : Maintenant j'ai ma sélection multiple , cela doit être tout simple mais comment je navigue dedans enfin , plus exactement comment je sélectionne l'enregistrement correspondant !?
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 // Ajout de la checkbox dans la colonne fixe procedure TForm1.FormCreate(Sender: TObject); begin Grid.AddCheckBoxColumn(0); end; // changement d'état , selection/déselection procedure TForm1.GridCellCheckBoxClick(Sender: TObject; ACol, ARow: Integer; Cell: TFmxObject); begin Grid.RowSelect[ARow]:=not Grid.RowSelect[ARow]; end; // Colorisation des lignes selectionnées procedure TForm1.GridGetCellLayout(Sender: TObject; ACol, ARow: Integer; ALayout: TTMSFMXGridCellLayout; ACellState: TCellState); begin if Grid.RowSelect[Arow] then begin ALayout.Fill.Color := Grid.StylesData['SelectedCellLayout.Layout.Fill.Color'].AsUInt64; end else begin ALayout.Fill.Color := Grid.StylesData['NormalCellLayout.Layout.Fill.Color'].AsUInt64; end; end;
Dans un DBGrid VCL Classique il y a le GotoBookMark mais avec le FMXStringGrid et les LiveBindings y a pas ou alors je ne sais pas où ?
[Edit] Suite , j'indique la version au cas où XE4
Par hasard , je suis "tombé" sur un autre problème de grille (TMSFMXGrid comme StringGrid)
J'ai voulu faire une lecture de toute ma table , le classique 'First .. While Not EOF ... Next, et là surpriseau niveau de la grille en première ligne , je retrouve mon dernier enregistrement !
J'ai bien sur essayé les disablecontrols /EnableControls rien n'y fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm1.Button1Click(Sender: TObject); begin //Grid.BeginUpdate; ADTable1.DisableControls; adtable1.First; while not ADTable1.EOF do begin if Adtable1Checked.asBoolean then showmessage(ADTable1LIBELLE_APPOSE.AsString); ADTable1.Next; end; ADTable1.EnableControls; //Grid.EndUpdate; end;
Y a t'il une astuce supplémentaire , un truc ?
voilà les images en illustration
1- au design "normal"
2- à l'ouverture , j'ai fait un First juste après le onCreate
3- apres clic sur le bouton voir code , la "fameuse" boucle
Partager