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 :

interdire la sélection de certaines lignes dans un DBGrid


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut interdire la sélection de certaines lignes dans un DBGrid
    Salut tous j'aimerais savoir si il est possible et comment faire pour interdire la sélection de certaines ligne dans un dbgrid.

    exemple j'ai dans un dbgrid des ligne avec un champs de base de donnée paradox actif = 1 et d'autres actif = 0

    J'aimerais si possible faire un sélection sur les lignes actif = 1
    et ne pas pouvoir sélectionner les actif = 0

    Je ne suis pas sur que cela soit possible.
    je vous remercies a l'avance

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Points : 5 918
    Points
    5 918
    Par défaut
    Bonjour,

    Ne vaut-il mieux pas filtrer les enregistrements "inactifs" ? et éventuellement rajouter une case à cocher pour les visualiser ?

    S'il s'agit de sélections multiples, pourquoi ne pas ignorer les éléments "inactifs" sélectionnés lors de leur traitement ? éventuellement en prévenant l'utilisateur ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,

    Ne vaut-il mieux pas filtrer les enregistrements "inactifs" ? et éventuellement rajouter une case à cocher pour les visualiser ?

    S'il s'agit de sélections multiples, pourquoi ne pas ignorer les éléments "inactifs" sélectionnés lors de leur traitement ? éventuellement en prévenant l'utilisateur ?

    ils sont inactif mais j'ai besoins de les montrer dans mon DBGRID avec un couleur de ligne gris clair déja la visuellement possible d'imaginer que la ligne est inactive .Je veux simplement assuré le coup en empêchent le clic sur cette ligne

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 885
    Points : 11 403
    Points
    11 403
    Billets dans le blog
    6
    Par défaut
    Dans ce cas, je suppose que tu dois gérer le OnDrawCell pour griser selon le champ 'actif' ; aussi ne te reste-t-il qu'à gérer le OnMouseUp pour l'annuler si pas actif => pas de clic (je pense)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Dans ce cas, je suppose que tu dois gérer le OnDrawCell pour griser selon le champ 'actif' ; aussi ne te reste-t-il qu'à gérer le OnMouseUp pour l'annuler si pas actif => pas de clic (je pense)

    Oui voila ,mais comment écrire pas de clic ??
    merci de votre aide

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 885
    Points : 11 403
    Points
    11 403
    Billets dans le blog
    6
    Par défaut
    On peut pê jouer sur OnSelectCell, en interdisant la sélection en affectant CanSelect à False.

    Tu peux aussi t'inspirer de ce code, en utilisant MouseToCell pour avoir la ligne correspondante et avorter l'opération si inactif :
    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
    // pour éviter le clic en dehors des cellules éditables
    procedure TForm1.sgCriteresMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    var
      iCritereCol, iCritereRow: integer;
      P: TPoint;
      Rect: TRect;
    begin
      if Button=mbLeft then
      with sgCriteres do begin
        // Rect des cellules éditables
        Rect.TopLeft := CellRect(FixedCols, FixedRows).TopLeft;
        Rect.BottomRight := CellRect(ColCount-1, Rowcount-1).BottomRight;
        P.X := X;
        P.Y := Y;
        // évite l'entrée en mode édition des cellule non éditables
        // et de la dernière de la ligne si clic au-delà
        if not PtInRect(Rect, P) then Abort;
      end;
    end;

  7. #7
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Points : 5 918
    Points
    5 918
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Dans ce cas, je suppose que tu dois gérer le OnDrawCell pour griser selon le champ 'actif' ; aussi ne te reste-t-il qu'à gérer le OnMouseUp pour l'annuler si pas actif => pas de clic (je pense)
    Sauf que quand on fait de la sélection multiple avec le clavier, l'évènement n'est pas déclenché...

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/12/2006, 17h00
  2. interdire la sélection de ligne dans un DBGrid
    Par socooooool dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/08/2006, 14h08
  3. Interdire la suppression d'une ligne dans une BDD
    Par griese dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 30/06/2006, 11h32
  4. Sélection d'une ligne dans un JTable
    Par dam21 dans le forum Composants
    Réponses: 3
    Dernier message: 28/07/2004, 13h57
  5. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 01h57

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