IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Grid (FMXGrid) , Table et Multiselection


Sujet :

Composants FMX Delphi

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 657
    Billets dans le blog
    65
    Par défaut Grid (FMXGrid) , Table et Multiselection
    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
    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;
    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 !?
    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à surprise au niveau de la grille en première ligne , je retrouve mon dernier enregistrement !
    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;
    J'ai bien sur essayé les disablecontrols /EnableControls rien n'y fait
    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
    Images attachées Images attachées    

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différences entre GRID et TABLE
    Par rouletabille63 dans le forum BIRT
    Réponses: 1
    Dernier message: 18/05/2012, 12h16
  2. [Dojo] Remplir un Grid à partir d'une table SQL
    Par lagoule dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 10/06/2009, 11h13
  3. Réponses: 2
    Dernier message: 14/01/2009, 10h21
  4. Formulaire de multiselection avec plusieurs tables
    Par Guillaume 78 dans le forum IHM
    Réponses: 2
    Dernier message: 21/05/2008, 10h51
  5. Fenêtre popup avec table en multiselection
    Par gbrion dans le forum WinDev
    Réponses: 5
    Dernier message: 18/03/2007, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo