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 :

Problème de Scroll sur Une TStringGrid en mode saisie


Sujet :

Delphi

  1. #1
    Membre confirmé

    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
    Points : 619
    Points
    619
    Par défaut Problème de Scroll sur Une TStringGrid en mode saisie
    J'utilise un TStringGrid dans laquelle l'utilisateur saisit via une combobox ou un TEdit.
    J'ai utilisé l'évènement OnDraxCell.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       If (ARow = Grille.Row) And
          (ACol = Grille.Col) Then Begin
             ed_Saisie.Visible   := True;
             ed_Saisie.Top       := Grille.Top  + Rect.Top;
             ed_Saisie.Left      := Grille.Left + Rect.Left + 2;
             ed_Saisie.Width     := Rect.Right  - Rect.Left;
             ed_Saisie.Text      := Trim(GrilleCadreCellule(ACol, Grille.Cells[ACol, ARow]));
             ed_Saisie.SetFocus;
          End;
    Cela fonctionne. Par contre si la cellule dans laquelle je veux saisir se situe sur la dernère ligne visible à l'écran elle ne récupère pas la bonne valeur dans le TEdit.
    Soit il y a un moyen d'empècher cela soit je simule un scroll pour faire avancer ma grille d'une ligne.
    Je sais le faire en VB avec une Flexgrid mais pas sous Delphi.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Il est possible que, dans le cas particulier de la dernière ligne, le ondrawcell se fasse avant le changement de col et de row.

    Il faudrait essayer d'appeler systématiquement le ondrawcell dans l'event onSelectCell.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Salut

    euh... ce ne serait pas plus simple, une TStringGrig avec goEditing:=true ?

    Bon, sans doute que non...
    Choisir, c'est renoncer...

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Points : 76
    Points
    76
    Par défaut
    Ou alors c'est que ed_Saisie ce n'est pas un TEdit, va savoir...

  5. #5
    Membre confirmé

    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
    Points : 619
    Points
    619
    Par défaut
    Ou alors c'est que ed_Saisie ce n'est pas un TEdit, va savoir...
    C'est un TEdit

    ce ne serait pas plus simple, une TStringGrig avec goEditing:=true
    Dans mon exemple j'ai par lé d'un champ de saisie. En fait il réagit à certaines règles notamment en matière de longueur et surtout il se transforme en CheckBox en focntion de certains critères.

    Je vais essayer ce que dit Graffito

  6. #6
    Membre confirmé

    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
    Points : 619
    Points
    619
    Par défaut
    Il faudrait essayer d'appeler systématiquement le ondrawcell dans l'event onSelectCell.
    Je n'ai pas su passer le parametre TRect.
    Je m'en suis sorti en ajoutant la ligne suivante dans le onEnter du TEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ed_Saisie.Text := Trim(GrilleCadreCellule(Grille.Col,
                                                 Grille.Cells[Grille.Col,
                                                              Grille.Row]));
    Cela étant je trouve que c'est un comportement anormal de Delphi.
    Merci de votre aide.

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

Discussions similaires

  1. gérer le scroll sur une pop-up de type confirm
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/05/2009, 14h45
  2. Scroll sur une JTextArea
    Par titus55 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/08/2007, 09h05
  3. Tetes de colones sur une TstringGrid
    Par didier17062006 dans le forum C++Builder
    Réponses: 1
    Dernier message: 03/10/2006, 13h41
  4. Scrolling sur une ListBox
    Par dede92 dans le forum Windows
    Réponses: 2
    Dernier message: 02/06/2006, 18h56

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