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 :

TMSFMXGrid colonne invisible


Sujet :

Composants FMX Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 46
    Points
    46
    Par défaut TMSFMXGrid colonne invisible
    Bonjour,

    quelqu'un sait-il comment on rend une colonne invisible dans une TTMSFMXGrid ?

    J'ai essayé un Grid.HideColumn(aCol). C'est digne d'un vieux comportement des StringGrids de Lazarus quand j'ai découvert cet IDE. Les entêtes s’emmêlent.

    Alors, évidemment, il existe Grid.ColumnWidths[aCol] := 0; c'est à dire la rustine Lazarus de l'époque. En Lazarus le problème était que même avec une largeur de 0, on pouvait "sizer" les colonnes dites invisibles. Avec TMS, on ne peut pas sizer les colonnes de largeur nulle -c'est bien pour mon problème- mais par contre, une fois que le colonne à une largeur nulle, on ne peut plus l'étendre. Enfin, je n'ai pas réussi. Par contre, j'ai réussi à réduire une table de 5 colonnes à une seule sans possibilité de faire réapparaître les 4 colonnes cachées.

    Quelqu'un a-t-il une solution ? Ou faut-il que je contacte une nouvelle fois le service technique ?

    Cordialement Zac.

  2. #2
    Membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    je me réponds.

    En réalité, j'ai trouvé par hasard, comment on peut utiliser HideColumn... mais au bon endroit et il y a gros mais (voir le résultat du dernier code de ce message).

    Avec 2 grids comprenant 5 colonnes [0 à 4 ]définies dans l'inspecteur d'objet (aGrid en haut et bGrid en bas):
    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
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     with aGrid do begin
     
        Options.Mouse.ColumnSizing := True;
        ColumnWidths[0] := 24;  { or Columns[0].Width := 24; }
        Cells[1, 0] := 'seID';
        Cells[2, 0] := 'gpID';
        Cells[3, 0] := 'Date';
        Cells[4, 0] := 'Classe';
        Cells[5, 0] := 'Titre';
     
        Cells[1, 1] := 'anID';
        Cells[2, 1] := 'anID';
        Cells[3, 1] := 'aDate';
        Cells[4, 1] := 'aClasse';
        Cells[5, 1] := 'aTitre';
     
        HideColumn(3);
     
     end;
     
     with bGrid do begin
        Options.Mouse.ColumnSizing := True;
        ColumnWidths[0] := 24;  { or Columns[0].Width := 24; }
     
        HideColumn(3);
     
        Cells[1, 0] := 'seID';
        Cells[2, 0] := 'gpID';
        Cells[3, 0] := 'Date';
        Cells[4, 0] := 'Classe';
        Cells[5, 0] := 'Titre';
     
        Cells[1, 1] := 'anID';
        Cells[2, 1] := 'anID';
        Cells[3, 1] := 'aDate';
        Cells[4, 1] := 'aClasse';
        Cells[5, 1] := 'aTitre';
     
     end;
    Nom : Test029.png
Affichages : 380
Taille : 10,9 Ko
    Or je définis en général la structure de mes Grids avant de les remplir.
    Et comment fait-on réapparaître la dite colonne ? Lui redonner une largeur ne semble pas fonctionner.

    Cependant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
      with aGrid do begin
         showmessage(Cells[3, 0]);
         showmessage(Cells[4, 0]);
      end;
    end;
    renvoie "Classe" puis "Titre" alors que l'on attend "Date" et "Classe" et fait apparaître un problème beaucoup plus sérieux qui a tout de suite réveillé ce vieux souvenir de Lazarus. Visiblement cette fonction non répertoriée dans l'aide.pdf mais appartenant bien à FMX.TMSGridData a un problème. Je me renseigne.

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je n'ai pas encore testé (cela va venir) mais qu'en serait-il si tu ajoutais des beginupdate/endupdate aux bons endroits ?

    P.S. et H.S. en tout cas pour le modified des TEdits, TMS a réagi avec célérité si j'en crois les notes de versions
    v3.2.3.0

    New : SaveToFile, LoadFromFile, SaveToStream and LoadFromStream in TTMSFMXTreeView
    Fixed : Issue with scaling in TTMSFMXRichEditor
    Fixed : Issue with cell selection in combination with freeze cells in TTMSFMXGrid
    Fixed : Issue with Modified property not set in certain conditions in TTMSFMXEdit
    Comme je le dit souvent à mes utilisateurs : "si vous signalez pas un comportement bizarre du programme comment voulez-vous que je sache qu'il peut contenir une erreur ?" Prévoir tout les cas n'est pas une mince affaire, même en appliquant les méthodes de test les plus exhaustives un cas particulier, non indiqué à la rédaction du cahier des charges (quand il y en a un), peut passer au travers de la méthode
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    oui ils sont réactifs et je suis très content du pack Firemonkey... Mais, j'aurais une propension à les déranger trop fréquemment à mon goût. Il faut dire que je l'utilise massivement.

    Le beginUpdate servirait-il à cet endroit du code puisque je suis dans le create de la Form ?

    Dans le cas précis, le HideColumn n'est pas documenté. Je leur ai transmis un rapport de bug probable.
    Mais avant de le faire, le premier réflexe a été le forum : il y avait peut-être une autre solution ou peut-être m'y prenais-je mal ?

    Bonne journée. Zac

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Je viens de faire un essai rapide ainsi que jeter un oeil sur le source pour trouver ente autre comment faire réapparaitre une colonne (UnHideColumn)
    en fait avec ton exemple j'ai utilisé le unhide pour voir ce qui se passait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm.Button2Click(Sender: TObject);
    begin
     if aGrid.IsHiddenColumn(3) then agrid.UnHideColumn(3)
                                        else agrid.HideColumn(3);
     if bGrid.IsHiddenColumn(3) then bgrid.UnHideColumn(3)
                                else bgrid.HideColumn(3);agrid.
    end;
    et que remarque t-on : que la colonne date de bGrid existe bien, mais que les données ne sont pas remplies !

    Dans le source c'est ici FMX.TMSGridData.pas ligne 1233 property Cells[Col,Row: Integer]: TCellData read GetCells write SetCells;le code de la fonction SetCells (qui nous préoccupe) contient pourtant une vérification des colonnes/lignes visibles, mais, et c'est là le nœud du problème seule les cellules visibles sont affectées

    En fait il faudrait plutôt quelque chose comme une surcharge quelconque de Cells[x,y,true/false] où true (par défaut)/False qui indiquerait s'il faut appliquer sur les colonnes visibles ou toutes au niveau coordonnées

    je suis très content du pack Firemonkey
    mon avis est mitigé, le pack est super mais c'est l'application des styles qui n'est pas top (à moins que cela soit moi) il est dommage que l'application d'un style "standard" ne se répercute pas sur les composants TMSFMX (ou du moins sans code)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    Rebonjour,

    Chouette pour les méthodes. Merci. On va attendre que ces méthodes soient corrigées parce que visiblement, il y a un dysfonctionnement.

    Citation Envoyé par SergioMaster Voir le message
    Dans le source c'est ici FMX.TMSGridData.pas ligne 1233 property Cells[Col,Row: Integer]: TCellData read GetCells write SetCells;
    Il va falloir que j'aille y faire un tour un de ces jours. Pour l'instant, je n'y suis pas allé !

    Je ne m'occupe pas trop des styles avec FireMonkey pour l'instant. En desktop, "sans" style, c'est déjà bien, cela reste esthétique aussi bien sous Windows qu'avec OS X. Comme je ne touche pratiquement pas au mobile pour l'instant, je n'ai pas remarqué ce problème. Pour le reste, on peut certainement trouver des défauts mais contrairement à certains composants fournis avec Delphi (Grids), TMS propose des composants avec des fonctions de bases intéressantes, fonctions qui n'existent pas sinon, et qu'il faut développer soit même, la multisélection par exemple .

    Cordialement. Zac.

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Je sais, c'est presque un déterrage, mais je suis "retombé" par hasard sur le post
    La solution dès qu'il y a des colonnes cachées en jeu : Il faut utiliser AllCells[col,row] en lieu et place de Cells[col,row]
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. [C# DataGrid] Colonne invisible
    Par fremsoi dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/02/2010, 11h01
  2. Réponses: 4
    Dernier message: 01/08/2007, 15h35
  3. [JXTable]Récupérer valeur de colonne invisible ?
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 02/07/2007, 21h22
  4. [VB.NET 2005] ListView : Rendre une colonne invisible
    Par rafou28 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/08/2006, 15h05
  5. [VB6] Flexgrid avec un colonne invisible
    Par zako dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/06/2006, 16h21

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