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 :

TListboxGroupHeader, redessin au runtime


Sujet :

Composants FMX Delphi

Vue hybride

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 624
    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 624
    Billets dans le blog
    65
    Par défaut TListboxGroupHeader, redessin au runtime
    Bonjour

    en trois images et un peu de code le problème
    design
    Nom : Capture.PNG
Affichages : 147
Taille : 6,3 Ko

    exécution
    Nom : Capture.PNG
Affichages : 144
Taille : 6,7 Ko Nom : Capture.PNG
Affichages : 140
Taille : 6,0 Ko

    Code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm4.Button1Click(Sender: TObject);
    begin
    if Sametext(Clients.Text,'not expanded') then clients.text:='Paramètres Clients' else Clients.Text:='not expanded';
    if SKSVG2.RotationAngle=180 then SKSVG2.RotationAngle:=0 else  SKSVG2.RotationAngle:=180;
     
    // vérification de la modification dans un TlistboxItem
    if SKSVG1.RotationAngle=180 then SKSVG1.RotationAngle:=0 else  SKSVG1.RotationAngle:=180;
     
    ClientPays.Visible:=not ClientPays.Visible;
    ClientDevises.Visible:=not ClientDevises.Visible;
    end;
    Comme vous le constaterez, la flèche du groupe ne change pas de sens alors que la flèche d'un TlistBoxItem n'a aucun souci.
    Un bogue avait été signalé (puis corrigé) quand on changeait le texte de Groupe (testé en première ligne de code) mais il me semble que le souci est plus grave, votre avis ?

    P.S. j'ai tenté, les styles, les beginupdate/endUpdate etc.. sans succès

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    tu peux tenter ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SKSVG2.RotationAngle := 180 - SKSVG2.RotationAngle;
    c'est à la fois plus simple et évite la comparaison d'un Single avec une constante...ce qui est toujours un peu douteux
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 624
    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 624
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Élégant , mais ne change rien au fait que le Header reste inchangé.

    La seule solution que j'ai pour l'instant, c'est d'utiliser, à la place d'un TListBoxGroupHeader, un TTistBoxItem et de changer sa propriété StyleLookup en 'listboxPlainHeader'
    Dommage, la notion de GroupHeader disparait (sauf au niveau du StyleLookup)

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 624
    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 624
    Billets dans le blog
    65
    Par défaut
    J'ai refait un essai avec un autre TListBroupBoxHeader et pas de problème (la flèche bouge correctement)
    Du coup, j'ai repris mon code en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm4.ArticlesClick(Sender: TObject);
    begin
    SKSVG2.RotationAngle:=SKSVG2.RotationAngle-180;
    ListboxItem1.Visible:=not ListboxItem1.Visible;
    ListboxItem2.Visible:=not ListboxItem2.Visible;
    ListboxItem3.Visible:=not ListboxItem3.Visible;
    end;
    Le deuxième groupe fonctionne correctement.

    Nom : Capture.PNG
Affichages : 104
Taille : 25,4 Ko

    Si je rajoute un item, même de taille faible (hauteur=0) au-dessus de mon premier groupe, le premier groupe a le bon comportement !
    Si je rends invisible le filler, je retombe sur le même bogue, car désormais, je pense pouvoir le qualifier ainsi non ?

    Pour ceux qui auraient envie de tester et pour ceux qui ont aussi la prochaine version en test (Delphi 11 + SKIA nécessaire, SkiaSVG à changer par une image si besoin)
    j'ai "dépersonnalisé" le programme dans ce zip
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    alors j'ai fait un test rapide avec un TLabel...et j'ai le même problème, c'est très surprenant...même le changement de texte ne se fait pas...comme si le composant était figé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Label1.RotationAngle := 180 - Label1.RotationAngle;
      Label1.Text := Char(1 - (Ord(Label1.Text[1]) - Ord('A')) + Ord('A'));
     
      Label2.RotationAngle := Label1.RotationAngle;
      Label2.Text := Label1.Text;
    end;
    Nom : Presse-papiers-22.png
Affichages : 101
Taille : 4,4 Ko

    => https://quality.embarcadero.com/browse/RSP-40432
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 624
    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 624
    Billets dans le blog
    65
    Par défaut
    Merci Paul, mais peut-être un dépôt un peu rapide.
    Entre temps (fouille dans les sources FMX.TListBox ) , j'ai découvert une propriété de ListBox qui change la donne (ligne 5090, juste au-dessus du { TListBoxGroupHeader }) , GroupingKind. Par défaut à Plain si tu la mets à Grouped, tu devrais obtenir le comportement attendu.

    Je ne m'étais penché sur les groupes qu'avec la TListView, il faudra que j'étudie un peu plus s'il y a une équivalence dans la TListBox.

    En tout cas, j'oublie le filler, je mets GroupingKind à Grouped et mon problème est

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

Discussions similaires

  1. [TP]Runtime error 106 à l'exécution
    Par BlackTiger dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 25/01/2004, 21h50
  2. redessiner une Image1 avant de poursuivre
    Par jakouz dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/11/2003, 16h57
  3. [LG]runtime error 202
    Par picsou123 dans le forum Langage
    Réponses: 2
    Dernier message: 14/11/2003, 22h53
  4. Runtime VC++ ou MFC
    Par Elodie_nl dans le forum MFC
    Réponses: 9
    Dernier message: 03/12/2002, 17h23
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51

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