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 :

Delphi 7 clientDataSet DbGrid BookMark


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 508
    Par défaut Delphi 7 clientDataSet DbGrid BookMark
    Bonjour

    j'édite deux tables T1 et T2 liées par le champ MasterFields/Mastersource afin d'exprimer l'équivalent d'une jointure. T2.mastersource=T1.DS1.

    Les tables sont définies par des TClientDataSet (DS1 et DS2) au format XML, créés à la volée. (les dataset sont créés dynamiquement mais les tables sont chargées depuis des fichiers XML)

    La table principale T1 est affichée via un DbGrid (DBGrid1) et la table dépendante T2 via un DBGrid2.

    Je souhaite activer l'option dgMultiSelect sur le DbGrid2. Ceci entraîne la création de bookmark sur le DS2. Si je sélectionne plusieurs lignes, (plusieurs bookmark) sur DS2 et que je clique sur dbgrid1, cela change la ligne active de T1 et déclenche la mise à jour des ligne de la table T2 (par le biais des propriétés MasterSource/MasterField).

    C'est ici que les problèmes commencent car les bookmarks sur DS2 restent alloués (dbgrid2.selectedrows.count > 0) et si j'accède au bookmark, ça plante avec l'erreur enreg non trouvé. Or dans l'évenement ds2.ondatasetchange, j'accède à ces bookmark (besoins de l'appli).

    Si je tente d'insérer une déselection des lignes de DS2 dans le clic du dbgrid1, l'évenement est quand même traité après l'évenement ds2.ondatasetchange.

    Je sais, c'est un peu compliqué et quelque peu spécifique, mais si quelqu'un a rencontré le même problème...

    L'idéal serait que je mette en ligne le code, mais pour l'instant il est noyé dans une grosse appli et ça demande un peu de boulot pour extraire juste la partie litigieuse. Si cela intéresse quelqu'un je ferai cet effort.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 093
    Par défaut
    Personnellement, j'ai déjà eu des Grilles avec Multi-Selection, je parcourais les BookMark, mais il est vrai que mélanger à un lien Maitre-Detail c'est assez sportif ...

    As-tu essayé d'effacer la Selection, sur le OnExit de la Grille2 ... et si tu es parano, dans le OnEnter de la Grille1
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 508
    Par défaut
    Sur le OnExit du DbGrid2 ce n'est pas approprié car je peux donner le focus a un controle tier.

    Su le OnEnter de la grille 1, c'est une idée. ...

    Et oui, vérification faite en faisant dbgrid2.selectedrows.clear dans le DbGrid1.OnExit celà fonctionne à première vue.

    Qu'on se le dise. Merci de l'idée.

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

Discussions similaires

  1. (Delphi 6) Bug DBGrid ?
    Par sfpx dans le forum Composants VCL
    Réponses: 1
    Dernier message: 03/08/2009, 07h22
  2. Delphi For PHP / DbGrid invisible
    Par jackfirst72 dans le forum Bases de données
    Réponses: 6
    Dernier message: 24/10/2007, 15h02
  3. [delphi] imprimer un DBGrid
    Par naazih dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/04/2006, 09h24
  4. RemoteDataModule,DBExpress et ClientDataSet en Delphi
    Par BadRedMane dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/12/2004, 20h21
  5. inserer une image dans un dbgrid delphi
    Par cello dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 18h51

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