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 :

[TcxGRid] Garder le focus sur l'enregistrement en cours


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut [TcxGRid] Garder le focus sur l'enregistrement en cours
    Bonjour,

    J'utilise un Cxgrid de la suite devexpress, qui est rattaché à un Datasource. Je peut créer, supprimer etc..

    Cependant je voudrais que lorsque mon utilisateur fait une création ou une modification il ne puisse pas naviguer sur les autres enregistrements de mon Cxgrid, jusquà qu'il annule ou valide l'enregistrement en cours.

    J'ai fais plusieurs tests, fait des recherches sur notre ami Google sans succés.

    Merci de votre aide.
    Valoji

  2. #2
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    Extrait de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TFic_PlanFact.cxGrid_LstRubriqueNavigatorButtonsButtonClick(
      Sender: TObject; AButtonIndex: Integer; var ADone: Boolean);
    begin
      case AButtonIndex of
        NBDI_INSERT : Begin
                       Adone := True;
                       FlagEtatFonc := Creation;
                       Table_NoTru.Insert;
                       ActiverBoutons(True);
                       //cxGrid_LstRubrique..DataController
                      End;

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cxGrid.enabled := False
    devrait être suffisant pour eviter que l'utilisateur balade avec la grid non ?

  4. #4
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Salut,

    la navigation dans la grid implique un post si le dataset est en edition.
    il suffit donc de jouer avec le beforepost et un flag pour n'autoriser le post que depuis le bouton du navigateur de la grid.

  5. #5
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    Salut,

    J'ai utilisé la méthode de Kaféine, j'obtiens le résultat voulu :
    Code utilisé pour les personnes qui sont interressé :
    Dans l'évenement NavigatorButtonsButonnClick, utilisé un flagcontrole :
    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
    procedure TFic_PlanFact.cxGrid_LstRubriqueNavigatorButtonsButtonClick(
      Sender: TObject; AButtonIndex: Integer; var ADone: Boolean);
    begin
      case AButtonIndex of
        NBDI_INSERT : Begin
                       Adone := True;
                       FlagEtatFonc := Creation;
                       Table_NoTru.Append;
                       ActiverBoutons(False);
                       Flagcontrole := False;
                      End;
        NBDI_CANCEL : Begin
                       Adone := True;
                       FlagEtatFonc := Consultation;
                       Table_NoTru.Cancel;
                       Flagcontrole := True;
                       ActiverBoutons(True);
                      End;
        NBDI_POST   : Begin
                       Adone := True;
                       FlagEtatFonc := Consultation;
                       Table_NoTru.Post;
                       Flagcontrole := True;
                       ActiverBoutons(True);
                      End;
    Puis dans l'évenement before post de ta table cancel, edit et post, etc. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      procedure TFic_PlanFact.Table_NoTruBeforeCancel(DataSet: TDataSet);
    begin
      if Flagcontrole = False then
      begin
        Abort;
      end;
    end;
    Cela oblige les utilisateurs a utilisé les boutons du navigateurs.

    Pour un confort de visibilité dans mon cxgrid, je voudrais grisé toutes mes lignes sauf la ligne en cours de création ou de modification. Je débute avec ces composants et à vrai dire j'ai bien du mal à trouver de l'aide sur ces composants (A part dans les exemples fournis par la suite devexpress et sur leur site, en anglais bien sur.)

    Merci pour vos réponse,
    Valoji

  6. #6
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    petite erreur dans le code, dans les cas NBDI_CANCEL et NBDI_POST positionner le flagcontrole avant table_notru.cancel ou .post comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    NBDI_CANCEL : Begin
                       Adone := True;
                       FlagEtatFonc := Consultation;
                       Flagcontrole := True;
                       Table_NoTru.Cancel;
                       ActiverBoutons(True);
                      End;
        NBDI_POST   : Begin
                       Adone := True;
                       FlagEtatFonc := Consultation;
                       Flagcontrole := True;
                       Table_NoTru.Post;    
                       ActiverBoutons(True);
                      End;
    Valoji.

  7. #7
    Membre régulier Avatar de valoji
    Inscrit en
    Septembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2005
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    J'ai trouvé la solution :

    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
    procedure TFic_PlanFact.cxGrid_LstRubriqueCustomDrawCell(
      Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
      AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
    begin
      if FlagEtatFonc <> Consultation then
      begin
        if (AViewInfo.GridRecord.Selected) then
        begin
            ACanvas.Brush.Color := clWhite;
            ACanvas.Font.Color := clNavy;
        end
        else
        begin
          ACanvas.Brush.Color := clWhite;
          ACanvas.Font.Color := clGray;
        end;
     
      end;
    end;
    Merci pour votre aide
    Valoji.

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

Discussions similaires

  1. Garder le focus sur le dernier enregistrement
    Par Nacera dans le forum IHM
    Réponses: 4
    Dernier message: 28/05/2008, 09h53
  2. [MySQL] Garder "la main" sur un enregistrement après un INSERT
    Par pc.bertineau dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/05/2007, 11h07
  3. Réponses: 2
    Dernier message: 27/12/2006, 16h04
  4. [C#]garder le focus sur un node d'un treeview
    Par Blo0d4x3 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/05/2006, 21h23
  5. Réponses: 2
    Dernier message: 16/10/2004, 14h33

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