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 :

TStringGrid et Srollbars


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    641
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 641
    Par défaut TStringGrid et Srollbars
    Salut à tous,

    voici mon probleme:

    j'ai deux stringgrid l'une à coté de l'autre. Quand je scroll verticalement sur l'une, je veux que l'autre suive. Simple, non ?

    J'ai déjà regardé sur le net les solutions. Y'a pas foule.

    Si quelqu'un pouvait m'aider.

    Merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut
    Je pense qu'il faut intervenir au niveau de l'évènement TopLeftChanged de la première grille et définir la propriété topRow de la grille 2 avec la valeur de celle de la grille 1

  3. #3
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    si tu utlise les touche de direction de clavier voir SelectCell
    si non, tu peut surchargé winproc du premier stringgrid et détecter l'evenement liée au scrolling

  4. #4
    Membre éclairé Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    641
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 641
    Par défaut
    Merci.

    C'etait pourtant simple...

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    A mon avis tu dois pouvoir adapter la solution proposée ici pour que cela fonctionne en vertical.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Par défaut
    Salut j'espère que ceci t'aidera.

    J'ai deux grilles :
    une grille de titre et une grille de données posées sur un Tscrollbox.
    Il faux positionner la scrollbox du tstringgrid grDatas à ssVertical et à ssNone la grille grTitles.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Type
     
      TForm1 = class(TForm)
         ScrollBox1: TScrollBox;
         grTitles, grDatas : tstringgrid;
    (...)
     
      Private
        Fbool : boolean ;
        FPosition : integer;
     
    (...)
     
     
    procedure TForm1.grDatasMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    Begin
      if Fbool then
        scrollbox1.HorzScrollBar.Position := FPosition ;
      Fbool := false ;
    End;
     
     
     
     
    procedure TForm1.ajusteGrilles(grFixe, grMobile : TStringGrid) ;
    // ajuste horizontalement les 2 stringgrid
    var
      i,j : integer ; 
    Begin
      j:= 0 ;
      for i:=0 to (grFixe.colCount-1) do begin
        grMobile.colWidths[i] := grFixe.colWidths[i] ;
        j:= j+ grFixe.colWidths[i] ;
      end;
      scrollbox1.HorzScrollBar.Range := j+ 20 ;
    End;
     
     
    procedure TForm1.grTitlesMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    var
      aCol, aRow : longInt ;
      iLargeurMin : integer ;
    Begin
      if Fbool then
        scrollbox1.HorzScrollBar.Position := FPosition ;
      Fbool := false ;
      grTitles.MouseToCell(X, Y, aCol, aRow) ;
      if (Button=mbRight)and(aRow=0) then begin
        iLargeurMin := round(grTitles.canvas.textWidth(monTrim(grTitles.Columns[aCol].title.caption))+20) ;
        grDatas.ajusteTailleColonnes(aCol, iLargeurMin) ;
        ajusteGrilles(grDatas, grTitles) ;
      end;
    End;
     
     
     
    procedure TForm1.grTitlesExit(Sender: TObject);
    begin
      Fbool := true ;
      FPosition := scrollbox1.HorzScrollBar.Position ;
    end;
     
    procedure TForm1.grDatasExit(Sender: TObject);
    begin
      Fbool := true ;
      FPosition := scrollbox1.HorzScrollBar.Position ;
    end;
     
    procedure TForm1.grDatasSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
    // fait bouger la scrollbox pour rendre la cellule sélectionnée visible
    Begin
      if not Fbool then begin
        while (grDatas.cellRect(aCol, aRow).left<abs(grDatas.left))
        and(scrollbox1.HorzScrollBar.Position>0) do begin
          scrollbox1.HorzScrollBar.Position := scrollbox1.HorzScrollBar.Position-10 ;
          self.repaint() ;
        end ;
        while (grDatas.cellRect(aCol, aRow).right>abs(grDatas.left)+scrollbox1.clientWidth)
        and(scrollbox1.HorzScrollBar.Position<scrollbox1.HorzScrollBar.range-scrollbox1.clientWidth) do begin
          scrollbox1.HorzScrollBar.Position := scrollbox1.HorzScrollBar.Position+10 ;
          self.repaint() ;
        end ;
        FPosition := scrollbox1.HorzScrollBar.Position ;
      end ;
    End;
    bon courage!

  7. #7
    Membre éclairé Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    641
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 641
    Par défaut
    Merci à tous pour vos réponse. J'ai ma solution.

    Heureusement qu'il y a ce forum pour éviter les dépressions.

  8. #8
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    la quel si tu permet ???

  9. #9
    Membre éclairé Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    641
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 641
    Par défaut
    Citation Envoyé par edam
    la quel si tu permet ???
    simplement celle de Delphi-ne qui me suffit amplement pour ce que je dois faire.
    Mais je ne manquerais pas de regarder toutes les solutions que vous m'avez envoyés; histoire que je sois moins ignorant ce soir

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

Discussions similaires

  1. TStringGrid et édition
    Par nomdutilisateur dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/04/2004, 14h22
  2. comment gerer une TStringGrid
    Par madison59 dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/03/2004, 15h03
  3. Delete dans la propriété Rows d'un TStringGrid ???
    Par Neilos dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/02/2004, 23h55
  4. Delphi 7 et les TStringGrid
    Par Claude HENRY dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/05/2003, 09h18
  5. Comment imprimer le contenu d'un TStringGrid
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/06/2002, 15h41

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