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

Langage Delphi Discussion :

enregistrement de début de grille


Sujet :

Langage Delphi

  1. #1
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut enregistrement de début de grille
    Bonjour à tous

    Je travaille avec une table qui a, disons, 50 enregistrements. Elle est affichée dans un DBGrid qui n'a que 15 lignes. Donc pour voir la table, je fais un défilement. A un moment, je "double clique" sur une ligne qui n'est pas la première de celles affichées.

    Ma question : existe-t-il un moyen pour connaître le numéro de l'enregistrement qui est affiché dans la première ligne de mon tableau ?

    Merci pour toute suggestion .... ou pour une réponse Non !

  2. #2
    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
    Je ne comprend pas bien ce que tu veux faire.

    Lors de l'ouverture du Dataset (Query, Table, etc ...) tu es positionné directement sur la première ligne.

    Si tu as besoin à chaque click, il te faut :

    1- Créer un bookmark sur la ligne ou tu es
    2- faire un first avec le dataset
    3- Faire ce que tu as à faire sur ta 1er ligne
    4- Repositionner sur ta ligne sélectionnée via le bookmark le dataset

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    bon jour
    j'ai pas comprend ce que veux tu dire mais peux etre que vous rechercher le numero d'enregistrement courant de la table

  4. #4
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Je veux bien croire que je n'ai pas été très clair . Je vais essayer de mieux expliquer. Je reprends donc ma table de 50 enregistrements, et ma grille de 15 lignes.
    Au départ, la grille affiche les 15 premiers enregistrements : ça c'est parfait

    Maintenant, je fais défiler jusqu'à arriver sur l'enregistrement 40. Donc mon curseur est sur la dernière ligne de la grille et la première ligne affiche l'enregistrement 26. Je remonte de quelques lignes (moins de 10).

    Je fais un double clic : exécution d'une procédure qui ferme la table et la ré-ouvre. Lorsque je reviens, je voudrais avoir le même affichage : enregistrement 26 en haut de la grille et mon curseur sur la ligne où j'étais lors du clic.

    Dans cet exemple tout ce que je connais réellement c'est l'enregistrement au moment du clic. J'aimerais connaitre ce que j'ai appelé l'enregistrement 26.

    J'espère avoir été plus clair

  5. #5
    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
    Ça ne fera pas exactement ce que tu souhaites, mais tu peux :

    1- Mettre dans une variable l'identifiant de la ligne sélectionnée
    2- Fermer ta table puis ouvrir ta table
    3- Faire un locate sur cet identifiant pour revenir sur l'enregistrement que tu avais modifié.

  6. #6
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Merci Rayek, et en effet cela ne fait pas ce que je souhaite....car je l'ai déjà testé. Lorsque je reviens dans ma grille, l'enregistrement est positionné en début de grille !

  7. #7
    Membre émérite 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
    Points : 2 770
    Points
    2 770
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Ça ne fera pas exactement ce que tu souhaites, mais tu peux :

    1- Mettre dans une variable l'identifiant de la ligne sélectionnée
    2- Fermer ta table puis ouvrir ta table
    3- Faire un locate sur cet identifiant pour revenir sur l'enregistrement que tu avais modifié.
    alors, enregistre celle qui se trouve en haut,
    question, pourquoi fermer puis ouvrir? quel type de base t'as?

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 612
    Points : 25 303
    Points
    25 303
    Par défaut
    Citation Envoyé par JP.NUAGE Voir le message
    Lorsque je reviens dans ma grille, l'enregistrement est positionné en début de grille !
    Pas toujours !
    Si Open (ou First) puis Locate, c'est en début
    Si Last puis Locate, c'est en fin
    Il s'arrête dès que c'est visible

    A Savoir que le Refresh ne souffre pas de ce problème, c'est lié à un classique Close\Open pour relire les données suite à la modification dans un formulaire d'édition
    Refresh ne fonctionnant toujours idéalement par contre

    c'est une question récurrente, il manque la propriété TopRow dans la TDBGrid : Choix de la premiere ligne d'affichage dbgrid
    Le sujet est vieux : "Dans une DBGrid, comment faire pour afficher des enregistrements précis de la base " mais je crois que la technique fonctionnait pas trop mal

    le principe reste le même, un Locate ou Bookmark puis un Scroll pour remplacer la ligne au bon endroit

    le scroll pouvant être de simuler un WM_VSCROLL
    Il y a aussi une bidouille en jouant sur MoveBy et VisibleRowCount\Row


    Une autre technique existe !
    Tu utilises un TClientDataSet qui contient le contenu de la Grille
    Tu modifie les données depuis le formulaire et tu modifies aussi le contenu du TClientDataSet
    Pas besoin de rafraichir donc plus de problème de positionnement

Discussions similaires

  1. [OpenOffice][Base de données] Nouvel enregistrement dans sous-formulaire grille par liste déroulante possible ?
    Par Zogar dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 11/06/2014, 11h56
  2. Réponses: 5
    Dernier message: 10/08/2011, 07h48
  3. Réponses: 2
    Dernier message: 06/08/2008, 10h16
  4. Nombre d'enregistrement dans la grille
    Par tryonyco dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/03/2007, 02h49
  5. enregistrer au début du fichier ?
    Par steinfield dans le forum Langage
    Réponses: 3
    Dernier message: 11/04/2006, 15h00

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