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 :

Cacher la CheckBox de certains TreeViewItem par programmation


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 095
    Par défaut Cacher la CheckBox de certains TreeViewItem par programmation
    Bonjour,

    je bute sur une chose qui me semblait simple à la base.

    J’aimerais cacher la checkbox de certains item de ma treeview par programmation, et je n’ai pas trouvé comment procéder après plusieurs tentatives infructueuses.

    Si vous pouviez m’éclairer sur une solution, cela m’aiderait beaucoup

    Merci d’avance.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    Par les API c'est une sorte d'image bidouillée, je crois avoir un code pour désactiver mais je ne sais plus si c'était un code maison d'un dessin manuel ou des vrais checkbox et c'est en C++Builder
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 095
    Par défaut
    Même en C++ Builder, je suis preneur

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    Désolé, je n'avais pas vu FMX, c'était évidemment en VCL via les API Windows
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    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 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Je n'ai que peu utilisé Treeview en FMX mais voilà au moins une solution quand tu crées ton item

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var item : TTreeviewItem;
    begin
      Item := TTreeViewItem.Create(Self);
      Item.Text := 'mon élément';
      Item.Parent := TreeView1;
      Item.StylesData['check.visible']:=false; // condition 
    end;
    en théorie, il serait possible de coder l'évènement onApplyLookup de chaque élément (ce que j'ai testé en premier soit dit en passant)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.TreeViewItem1ApplyStyleLookup(Sender: TObject);
    begin
     TTreeviewItem(Sender).StylesData['check.visible']:=false;
    end;
    de là, je pensais assigner l'évènement à la création de chaque item
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Item.OnStyleApplyLookup:=TreeViewItem1ApplyStyleLookup;
    Mais cela ne fonctionne pas, je dois me planter quelque part

    De même j'ai tenté, en vain, d'utiliser FindStyleResource de l'item, plutôt que le StylesData
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var c :=TreeViewItem.FindStyleRessource<TCheckBox>('check')
    mais j'ai à faire avec une erreur de syntaxe

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    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 638
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    de là, je pensais assigner l'évènement à la création de chaque item
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Item.OnStyleApplyLookup:=TreeViewItem1ApplyStyleLookup;
    Mais cela ne fonctionne pas, je dois me planter quelque part
    j'avais oublié les BeginUpdate/EndUpdate du TTreeView
    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
      private
        { Déclarations privées }
        procedure chkApplyStyleLookup(Sender : TObject);
      public
        { Déclarations publiques }
      end;
     
    var
      Form16: TForm16;
     
    implementation
     
    {$R *.fmx}
     
     
    procedure TForm16.Button1Click(Sender: TObject);
    var item : TTreeviewItem;
    begin
      treeview1.BeginUpdate;
      Item := TTreeViewItem.Create(Self);
      Item.Text := 'My First Node';
      Item.Parent := TreeView1;
      Item.OnApplyStyleLookup:=chkApplyStyleLookup;
      treeview1.EndUpdate;
    end;
     
    procedure TForm16.chkApplyStyleLookup(Sender: TObject);
    begin
     TTreeviewItem(Sender).StylesData['check.visible']:=TTreeviewItem(Sender).ChildrenCount=0;
    end;
    Toutefois, un test en ajoutant ensuite des enfants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm16.Button2Click(Sender: TObject);
    var item : TTreeviewItem;
    begin
      treeview1.BeginUpdate;
      Item := TTreeViewItem.Create(Self);
      Item.Text := 'My Child Node';
      Item.Parent := TreeView1.Selected;
      Item.OnApplyStyleLookup:=chkApplyStyleLookup;
      treeview1.EndUpdate;
    end;
    échoue lamentablement donc, à peaufiner

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

Discussions similaires

  1. [X3-V5] Cacher un champ par programmation
    Par Cereal123 dans le forum SAGE
    Réponses: 4
    Dernier message: 10/01/2019, 11h03
  2. Réponses: 8
    Dernier message: 21/08/2013, 11h48
  3. checkbox par programmation dans gridview
    Par roro06 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/08/2010, 09h53
  4. Enregistrement du son par programme
    Par Invité dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2003, 23h13
  5. Comment créer un nouveau dossier par programmation ?
    Par annecyrond dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2003, 07h59

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