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 VCL Delphi Discussion :

[XE10) Scrollbars d'un TForm ne s'affichent pas si utilisation des styles VCL


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 23
    Points
    23
    Par défaut [XE10) Scrollbars d'un TForm ne s'affichent pas si utilisation des styles VCL
    Bonjour,
    Un bug étonnant des styles VCL (constaté avec XE7 et XE10 Tokyo): sur une fiche TForm ayant Autoscroll à true et BorderStyle à bsSizeable,

    • sans style (c'est-à-dire avec le style Windows), des scrollbars apparaissent bien quand on réduit la fenêtre en masquant certains contrôles
    • avec un style VCL quelconque, les scrollbars ne s'affichent pas

    Je ne dois quand même pas être le premier à constater ça ? J'ai bien cherché mais rien trouvé à ce sujet. Merci pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 23
    Points
    23
    Par défaut Démarche pour reproduire le bug
    Voici un moyen simple de constater ce bug.
    Créez un projet "Application fiche VCL". Posez un composant (par exemple bouton) n'importe où sur la fiche Form1. Dans les propriétés de Form1, mettez Autoscroll à true. Exécutez. Réduisez la fiche de façon à masquer le composant: des barres de défilement s'affichent aussitôt.
    Changez le style de l'application: "Projet > Options > Application > Apparence", sélectionnez par exemple le style "Auric". Exécutez à nouveau, réduisez la fiche: pas de barre de défilement

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Reproduit sous 10.1 Berlin starter.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Reproduit également avec Tokyo 10.2.1 Entreprise (j'ai pas encore fait ma mise à jour en 10.2.2)
    [Edit] j'ai également tenté de forcer l'affichage avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm8.Button1Click(Sender: TObject);
    begin
     HorzScrollBar.Range := 10000; //plus grand que la taille de départ
      VertScrollBar.Range := 10000; // plus large que la largeur de départ
      ShowScrollBar(Handle, SB_BOTH, True);
    end;
    même chose, ne fonctionne pas avec un style par défaut au départ, reste à voir si en chargeant le style après cela fait quelque chose
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 23
    Points
    23
    Par défaut Sympa les gars
    Sympas les gars, merci de votre intérêt pour ce problème.

    Je suis quand même très étonné qu'il n'ait (semble-t-il) gêné personne jusqu'à présent...

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par BéBéHi Voir le message
    Je suis quand même très étonné qu'il n'ait (semble-t-il) gêné personne jusqu'à présent...
    Cela a été reporté dans le Quality Central RSP-19366, toujours ouvert et non résolu quoique l'auteur du rapport indique que via le support (dont il donne d'ailleurs la référence) son problème avait été résolu.
    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

  7. #7
    Rédacteur/Modérateur

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

    un petit peu plus de test ce matin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm8.Button1Click(Sender: TObject);
    begin
    if VertScrollBar.IsScrollBarVisible then Showmessage('visible') else Showmessage('invisible');
    end;
    ce petit bout de code pour vérifier si le programme considére la ScrollBar comme visible ou non. A noter que je n'utilise pas la propriété VertScrollBar.Visible vraie par défaut. Eh bien, si l'on applique un style, c'est bien le message 'visible' qui s'affiche ! bref nos yeux ne sont certainement pas assez bons !
    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

  8. #8
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,

    en fait il semblerait que les ScrollBars soient dessinées sur la bordure de la fenêtre ce qui les fait
    disparaitre de suite

    en ajoutant ce code à la Form et en jouant avec la molette on peut les voir par scintillement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TFormTest.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    begin
      SendMessage(Handle, WM_VScroll, SB_LINEDOWN, 0);
    end;
     
    procedure TFormTest.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    begin
      SendMessage(Handle, WM_VScroll, SB_LINEUP, 0);
    end;
    Sinon une simple ScrollBox contourne ce problème

    PS: j'ai testé le changement de style en runtime et c'est pareil (Tokyo 10.2)
    Cordialement,

    @+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Bonjour et merci pour vos investigations, SergioMaster et Cirec.
    J'ai regardé ce que donne une ScrollBox, il semble qu'elle subisse le même phénomène, probablement pour les mêmes causes .

  10. #10
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Citation Envoyé par BéBéHi Voir le message
    Bonjour et merci pour vos investigations, SergioMaster et Cirec.
    J'ai regardé ce que donne une ScrollBox, il semble qu'elle subisse le même phénomène, probablement pour les mêmes causes .
    Chez moi ça fonctionne parfaitement avec une ScrollBox (Tokyo 10.2 Starter)

    MainForm AutoScroll = False
    ScrollBox Align = alClient

    Cordialement,

    @+

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Bon, comme ce problème est semble-t-il assez ancien, je présume que sa correction n'est pas pour tout de suite.

    Vu l'usage que je fais en l'occurrence des scrollbars sur une Form (je dessine sur le canvas dans l'événement OnPaint de la fiche), j'ai mis en place une solution de contournement avec un TScrollBar posé sur la fiche, avec prise en compte de l'événement OnScroll .

    En tout cas, merci à tous !

Discussions similaires

  1. Find n'affiche pas les champs des tables jointes
    Par didjac dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 02/06/2014, 08h20
  2. SynthPainter n'affiche pas la bordure des tooltips
    Par Sancho_54 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 28/11/2013, 16h30
  3. [GEF] scrollbar ne s affiche pas
    Par *alexandre* dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 14/03/2008, 08h59
  4. Réponses: 2
    Dernier message: 22/10/2007, 12h10
  5. Réponses: 3
    Dernier message: 15/01/2007, 08h41

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