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 :

Scrolling horizontal dans TListBox


Sujet :

Composants VCL Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut Scrolling horizontal dans TListBox
    Bonjour,

    J'ai ajouté l'appel à la procédure suivante après le chargement du contenu de chacune de mes différentes ListBox afin d'ajouter la barre d'ascenseur horizontale quand c'est nécessaire :

    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
    procedure AjouterAscenseurHorizontalListBox (listBox : TListBox);
    var
      intWidth,
      j,
      intMaxWidth : integer;
    begin
      intMaxWidth := 0;
      for j := 0 to listBox.Items.Count - 1 do
        begin
          intWidth := listBox.Canvas.TextWidth (listBox.Items.strings [j]);
          if intWidth > intMaxWidth then
            intMaxWidth := intWidth;
        end;
      SendMessage (listBox.Handle, LB_SETHORIZONTALEXTENT, intMaxWidth, 0);
    end;
    Cela fonctionne globalement mais pas avec précision ;
    il semble que les calculs de taille du texte ne tiennent pas compte de la police définie par la propriété "Font" de la ListBox considérée.

    Quelqu'un a-t-il une idée pour résoudre ce problème ?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    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 : 13 982
    Par défaut
    lol, j'ai fait proposer la même chose à un collègue, il n'y a pas 2 semaines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
      intMaxWidth := 0;
     
      listBox.Canvas.Font := listBox.Font;
     
      for j := 0 to listBox.Items.Count - 1 do
    ...
    C'est un problème de changement de font par défaut entre 2K et XP, c'est passer de Ms Sans Serif à Tahoma, la plupart des objets n'ayant pas de valeur spécifique dans le DFM passe de l'un à l'autre, mais le Canvas lui ne semble pas le voir !

    Sinon, tu pourrais explorer la TListView en mode vsList, les libellés qui dépasse la largeur visible seront automatiquement complétés par un Hint !
    C'est du plus bel effet !
    J'ai fait le même conseil à mon collègue ! il a donc transformer ses TListBox en TListView
    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 actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut OK suite à conseil de ShaiLeTroll
    En ajoutant l'instruction suivante :
    "listBox.Canvas.Font := listBox.Font;"
    en début de procédure, comme conseillé par ShaiLeTroll, le scrolling de la ListBox fonctionne maintenant correctement.

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

Discussions similaires

  1. Scroll horizontal dans un div
    Par h.thierry dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 03/07/2012, 21h19
  2. Scroll horizontal dans les onglets
    Par sebseb3 dans le forum Android
    Réponses: 2
    Dernier message: 11/07/2011, 14h29
  3. Réponses: 0
    Dernier message: 12/06/2010, 13h45
  4. Scroll horizontal à la souris dans un JScrollPane
    Par BakaOnigiri dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 22/09/2008, 14h48
  5. [DIV][Scroll]Scroll horizontal dans un DIV
    Par Salam59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/03/2006, 11h38

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