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 :

Comment récupérer la valeur d'un dbGrid dans des fenêtres MDI ?


Sujet :

Composants VCL Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Comment récupérer la valeur d'un dbGrid dans des fenêtres MDI ?
    Bonjour
    J'ai un souci, j'essaye de récupérer la valeur d'un dbgrid dans un tedit d'une autre fenêtre mdi. Concrètement dans ma première fenêtre je mets dans le edit la première lettre du nom de client que je cherche et quand j'appuie sur le bouton il m'affiche la liste de mes clients (dans une deuxièm fenêtre) et je dois double-cliquer sur le bon pour qu'il l'affiche dans mon edit de la première page. Mes deux fenêtres sont des fenêtres enfants mdi.

    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TFormListeClient.DBGrid1DblClick(Sender: TObject);
    begin
        FormFichesInter.Edit2.Text := DM1.TClient.FieldByName('sCliCode').AsString;
    end;
    Or quand j'essaye de le faire il me met : "violation d'adresse", or je comprends pas mes deux fenêtres mdi sont créées et mes tables sont ouvertes et accessibles??
    Pouvez-vous m'aidez ?

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 5 411
    Points : 8 076
    Points
    8 076
    Par défaut
    Salut et bienvenue sur DVP.com
    Pour commencer, édite ton post et met les balises code
    Ensuite, montre un peu plus de code... Comme les déclarations par exemple...
    Je pense que tu t'y prends mal...
    L'erreur que tu fais est d'appeler directement le nom de la classe... En fait, tu dois procéder autrement...
    Dasn ton cas, tu as 2 fiches MDI (TFormListeClient et TFormFichesInter) différentes. Donc, dans ton unité de ta Form principale, tu mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    public
      FicheClient:TFormFicheClient;
      FichesInter:TFormFichesInter;
    ...
    Ensuite, dans le OnCreate, tu crées directement tes 2 fiches...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TBidule.BiduleCreate(Sender:TObject);
    begin
      FicheClient:=TFormFicheClient.Create(Application);
      FichesInter:=TFormFichesInter.Create(Application);
    end;
    Bon cette méthode ne marche que si tu n'as QUE ces deux fiches...
    Note: n'oublie pas de déclarer en uses EN HAUT les unités qui contiennent TFormListeClient et TFormFichesInter...
    Finalement, ta procedure donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TFormListeClient.DBGrid1DblClick(Sender: TObject); 
    begin 
    Main.FichesInter.Edit2.Text := DM1.TClient.FieldByName('sCliCode').AsString; 
    end;
    BOn Dev'
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour et merci mais ça ne va pas aller. Je vais essayer de m'expliquer mieux. J'ai besoin de pouvoir créer autant de fiches que possible.
    On a une fenêtre parent avec le menu principal, une première fenêtre fille avec la liste des fiches d'intervention et une deuxième fenêtre fille (la fiche d'intervention) qui doit pouvoir être créée plusieurs fois (si on clique sur plusieurs fiches dans la liste).

    J'ai ma fenêtre parent, je demande de créer une nouvelle fiche d'intervention(child) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //*********************************
    //Changement sur les fiches d'intervention
    //*********************************
    //ajout d'une fiche
    procedure TFormMenu.AjouterFicheClick(Sender: TObject);
    begin
        TFormFichesInter.Create(Application);
        ChoixFichInter:=0;
    end;
    Sur ma fenêtre enfant :

    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
     
    procedure TFormFichesInter.FormShow(Sender: TObject);
    begin
         case  FormMenu.ChoixFichInter of
           0: begin
                CreerNouvelleFiche;
                DM1.TClient.First;
              end;
           1: begin
                  if not (DM1.TFicheInter.RecordCount = 0) then
                      ModifierFiche;
              end;.....
     
    procedure TFormFichesInter.CreerNouvelleFiche;
    begin
        Caption:='Nouvelle fiche d''intervention';
        DM1.TFicheInter.Insert;
    end;
    Quand ma nouvelle fiche est créée, j'appuie sur un bouton pour récupérer le nom du client dans ma table client. (troisième fiche enfant qui affiche la liste des clients.)
    Ce que je veux donc c'est réussir à récupérer ce nom de client dans un tedit de la fiche d'intervention (où je peux placer les premières lettres du nom). Je peux ainsi récupérer l'adresse complète de mon client sans tout retaper.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TFormFichesInter.SpeedButton1Click(Sender: TObject);
    begin
        FormListeClient:= TFormListeClient.Create(Application);
        DM1.TClient.FindNearest([UpperCase(Edit2.Text)]);
    end;
     
    procedure TFormListeClient.DBGrid1DblClick(Sender: TObject);
    begin
               FormFichesInter.Edit2.Text := DM1.TClient.FieldByName('sCliCode').AsString;
    end;
    Est-ce plus clair ?
    Merci tout de même pour l'aide.

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 5 411
    Points : 8 076
    Points
    8 076
    Par défaut
    Ok
    donc si c'est comme ça, tu dois caster systématiquement depuis Main.MDIChild:
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (Main.MDIChilds[n] as TFormFichesInter).Edit2.Text := DM1.TClient.FieldByName('sCliCode').AsString;
    Le seul problème qui reste est de savoir à quel index correspond n... Il faut que tu l'enragistre de telle façon que tu puisse retrouver la bonne fiche MDI...
    Bon dev'
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour l'aide !

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 5 411
    Points : 8 076
    Points
    8 076
    Par défaut
    Mais de rien
    N'oublie pas le tag [Résolu] en bas à gauche
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/08/2013, 16h31
  2. Comment récupérer la valeur de l'index dans un recordset
    Par T.B.O.I dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 16/08/2013, 12h12
  3. Réponses: 3
    Dernier message: 13/03/2009, 16h20
  4. comment récupérer la valeur d'une liste dans un servlet
    Par marwanos dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/04/2007, 01h58
  5. Réponses: 4
    Dernier message: 07/08/2006, 18h01

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