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 :

[TStringGrid] OnColSizing ?


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 3
    Par défaut [TStringGrid] OnColSizing ?
    Bonjour,
    j'aurais besoin d'exécuter une méthode après le redimensionnement d'une colonne dans une TStringGrid. Or, la TStringGrid ne possède pas ce genre d'événement.
    La seule chose que j'ai pu trouver dans le code grids.pas est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type TGridState = (gsNormal, gsSelecting, gsRowSizing, gsColSizing, gsRowMoving, gsColMoving );
    [...]
      TCustomGrid = class(TCustomControl)
    [...]
      protected
        FGridState: TGridState;
    Cette propriété protégée est entre autre utilisée pour savoir quel curseur afficher lorsque l'on redimensionne une colonne.
    Voyez-vous une autre solution pour moi que de créer une classe TMaGrid qui hérite de TStringGrid et qui ajoute une fonction TMaGrid.GetGridState : TGridState; ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai déjà eu à utiliser le redimensionnement des colonnes d'un TStringGrid.

    J'ai utilisé la méthode OnMouseDown où je charge dans un tableau les largeurs de colonnes et OnMouseUp où je compare mes largeurs actuelles avec celles ci.

    Par contre, j'ai pas d'exemple de code, c'était dans mon ancienne entreprise.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 43
    Par défaut
    Oui je vois une autre solution. Elle consiste bien à créer ta propre classe de TStringGrid mais tu peux y adjoindre une gestion d'événement pour détecter qu'une colonne a été redimensionnée :
    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
    type TMyStringGrid = class(TStringGrid)
      private
        FOnColWidthsChanged : TNotifyEvent;
      protected
        procedure DoColWidthsChanged;
        procedure ColWidthsChanged; override;
      published
        property OnColWidthsChanged : TNotifyEvent read FOnColWidthsChanged write FOnColWidthsChanged;
    end;
     
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        MyStringGrid : TMyStringGrid;
        procedure MyStringGridOnColWidthsChanged(sender : TObject);
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    { TMyStringGrid }
     
    procedure TMyStringGrid.ColWidthsChanged;
    begin
      inherited;
      DoColWidthsChanged;
    end;
     
    procedure TMyStringGrid.DoColWidthsChanged;
    begin
      if Assigned(FOnColWidthsChanged) then FOnColWidthsChanged(Self);
    end;
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      MyStringGrid := TMyStringGrid.Create(Self);
      MyStringGrid.parent := Self;
      MyStringGrid.Options := MyStringGrid.Options + [goColSizing];	 
      MyStringGrid.OnColWidthsChanged := MyStringGridOnColWidthsChanged
    end;
     
    procedure TForm1.MyStringGridOnColWidthsChanged(sender: TObject);
    begin
      showmessage('Une colonne a bougé.');
    end;
    Un peu long comme code mais c'est surtout pour l'exemple.
    En éspérant que ca te va .

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 3
    Par défaut
    Merci Jérôme !
    Je vais jeter un oeil sur cette idée !

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 3
    Par défaut
    Merci ElNan ! C'est ce que j'étais en train de me résigner à faire !

+ 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