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

Delphi Discussion :

Forcer l'affichage de la ScroolBar verticale du StringGrid


Sujet :

Delphi

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut Forcer l'affichage de la ScroolBar verticale du StringGrid
    Bonjour,

    Voilà, pour une question d'esthétique, je voudrai que mon StringGrid affiche la Scroolbar verticale .
    En effet, lorsque le StringGrid contient un nombre trop grand de lignes, la scroolbar apparait, mais dans mon programme, les lignes se créent au fur et à mesure donc j'aimerai forcer l'affichage de cette ScroolBar.

    J'espère que vous pourrai m'aider
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut !

    Essaye ceci:
    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
     
    type
      TForm1 = class(TForm)
        StringGrid1: TStringGrid;
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        FOldWindowProc: TWndMethod;
        procedure StringGridWindowProc(var Message: TMessage);
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FOldWindowProc := StringGrid1.WindowProc;
      StringGrid1.WindowProc := StringGridWindowProc;
    end;
     
    procedure TForm1.StringGridWindowProc(var Message: TMessage);
    begin
      ShowScrollBar(StringGrid1.Handle, SB_VERT, True);
      FOldWindowProc(Message);
    end;
     
    end.
    Je ne l'ai pas testé avec des données dans le StringGrid...Donc tiens nous au courant.
    @+

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci Claudius40!

    Ca fonctionne parfaitement!
    Comme la programmation c'est comprendre ce que l'on fait aussi, tu n'aurais pas une petite explication à me fournir sur le code que tu m'as donné?

    Merci pour ton aide

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FOldWindowProc := StringGrid1.WindowProc;
      StringGrid1.WindowProc := StringGridWindowProc;
    end;
    Ceci permet d'intercepter les messages Windows qui arrive au StringGrid. Les messages sont traités par ta procedure StringGridWindowProc. Tu conserves avec FOldWindowProc la procédure initiale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.StringGridWindowProc(var Message: TMessage);
    begin
      ShowScrollBar(StringGrid1.Handle, SB_VERT, True);
      FOldWindowProc(Message);
    end;
    Ici la fonction de l'API ShowScrollBar force l'affichage du scrollbar vertical.
    Ensuite tu n'oublies pas d'appeler la procédure initiale pour que le StringGrid traite le message envoyé.

    @+

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ok!

    Merci bien. J'ai cerné l'essentiel je pense! Un petit tour dans l'aide de Delphi pour FOldWindowProc car c'est ce truc là qui j'arrive pas trop à cerner.

    @+

    EDIT :

    J'ai rien trouvé dans l'aide !
    Je vais chercher un peu ailleurs

    EDIT 2 :

    Si je cherche pas le bon terme, je risque pas de trouver
    Je décortique ce que je viens de trouver

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    ReRe,

    Tous les composants héritant de TControl possède cette méthode WndProc de type TWndMethod. Elle a pour but de répondre aux messages Windows.

    Extrait de l'aide de Delphi 7 sur TWndMethod:
    Description

    Chaque fenêtre a une procédure de message répondant aux appels de Windows.Ces appels peuvent provenir de Windows (comme des messages de dessin),d'actions utilisateur (comme des messages souris)ou de vos messages émis dans votre propre code.

    TWndMethod est le type des procédures de message basées sur la VCL.Les procédures de message de ce type peuvent être affectées àdes contrôles en utilisant la méthode WindowProc.De plus,une fenêtre implémentant cette procédure mais qui n'est pas associée au contrôle peut être créée en utilisant la fonction AllocateHWnd.

    Le paramètre Message encapsule le message auquel répond la procédure.Il contient les champs pour les paramètres de message entrant et un champ résultat qui contient la valeur renvoyée.
    @+

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci, je viens de tombé aussi dessus

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/11/2008, 20h07
  2. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  3. [glut] forcer l'affichage au premier plan
    Par khayyam90 dans le forum OpenGL
    Réponses: 7
    Dernier message: 19/07/2004, 14h37
  4. [stringgrid] forcer l'affichage de la VscrollBar
    Par qi130 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/11/2003, 14h03
  5. Forcer l'affichage des dizaines...
    Par pataluc dans le forum Langage
    Réponses: 4
    Dernier message: 26/11/2002, 19h38

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