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 :

Récupérer le texte tapé dans une cellule d'un DBGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Points : 62
    Points
    62
    Par défaut Récupérer le texte tapé dans une cellule d'un DBGrid
    Salut tout le monde,
    J'ai besoin de savoir comment on peut récupérer le texte d'une cellule donné d'un composant DBGrid.
    Je vous remercie d'avance pour votre aide.

    Cordialement.

  2. #2
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Citation Envoyé par dark_geek Voir le message
    Salut tout le monde,
    J'ai besoin de savoir comment on peut récupérer le texte d'une cellule donné d'un composant DBGrid.
    Je vous remercie d'avance pour votre aide.

    Cordialement.
    Salut,
    essaye ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Edit1.Text:=dbgrid1.Columns[1].Field.value;//"1" => la 1ère colonne.
    end;
    a+

    NABIL74

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Points : 62
    Points
    62
    Par défaut
    merci pour ta proposition mais quand je l'ai essayé j'ai récupéré une valeure nulle.

    Pour bien présenter le problème j'ai besoin de travailler sur l'événement "OnKeyUp" de la grille, et à chaque fois que je tappe le texte dans une cellule donné je dois le récupérer au fur et à mesure.

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Citation Envoyé par dark_geek Voir le message
    merci pour ta proposition mais quand je l'ai essayé j'ai récupéré une valeure nulle.

    Pour bien présenter le problème j'ai besoin de travailler sur l'événement "OnKeyUp" de la grille, et à chaque fois que je tappe le texte dans une cellule donné je dois le récupérer au fur et à mesure.
    le code suivant récupère le contenu de la cellule du DBGrid dans un Memo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    {if DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.SelectedField.FieldName).AsVariant <>null then}
    Memo1.Text:=DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.SelectedField.FieldName).AsVariant;
    end;
    A+

    NABIL74

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Un problème subsiste tout de même sur ton code NABIL.
    Chaque récupération de la valeur d'un champs ne te donneras pas la valeur tapé en cours mais la valeur avant modification. Il te faudras faire un Post pour valider la saisie.
    Sinon, tu peux jouer sur Key et Shift pour construire manuellement le texte saisie. Mais ça c'est une longue histoire.

    A+
    On progresse .....

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Salut,

    @ Andry :

    Citation Envoyé par dark_geek Voir le message
    Salut tout le monde,
    J'ai besoin de savoir comment on peut récupérer le texte d'une cellule donné d'un composant DBGrid.
    Je vous remercie d'avance pour votre aide.

    Cordialement.
    Voici les propos de notre ami dark_geek.

    je lui ai fourni comment on récupère le texte tapé dans une cellule d'une DBGrid.

    Un problème subsiste tout de même sur ton code NABIL.
    Chaque récupération de la valeur d'un champs ne te donneras pas la valeur tapé en cours mais la valeur avant modification. Il te faudras faire un Post pour valider la saisie.
    il n'y a pas de problème du tout. c'est à dark_geek de le modeler comme il le souhaite.Il peut le mettre dans l'événement "OnKeyUp" (comme il le désirait).

    S'il veut sauvegarder les données, bien sûr qu'il doit faire un poste.

    Mais le soucis, c'est que dark_geek ne nous a pas dit où il veut récupérer les données saisies:dans un Memo,un richEdit,....?

    Sinon, tu peux jouer sur Key et Shift pour construire manuellement le texte saisie. Mais ça c'est une longue histoire.
    Personnellement, si je veux poster les données saisies dans la DBGrid(que je ne fais pas), je me pencherai sur l'événement "OnColExit" de la DBGrid.

    A+

    NABIL74

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 81
    Points
    81
    Par défaut
    Le fil est ancien, mais j'ai récemment eu le même problème que Dark_Geek. J'ai mis un peu de temps à trouver une solution propre, alors je partage:
    1) Créer un composant TMyDBGrid = class(TDBGrid)
    2) Remplacer le type de la DBGrid en TMyDBGrid.
    3) Y déclarer une fonction public :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function TMyDBGrid.getInplaceEditor: TInplaceEdit;
    begin
      result := InplaceEditor;
    end;
    Appeler getInplaceEditor dans votre code (ex: onKeyPress). Ça retourne un composant hérité de TCustomEdit qui permet de connaitre exactement le texte qui est tapé AVANT le post.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Une Exhumation

    Citation Envoyé par Andry Voir le message
    Il te faudras faire un Post pour valider la saisie
    Tu peux avoir la valeur sans faire le Post, c'est souvent le durant le DoExit que le champ est mis à jour !
    C'est là le piège, effectivement la solution de Gwenou contourne cela car c'est lorsque l'on sort du InplaceEditor que cela met à jour le champ
    J'ai toujours trouvé dommage que InplaceEditor ne soit disponible que par héritage, c'est pénible !

    Il y a confusion entre Post et des mécanismes comme UpdateRecord
    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

Discussions similaires

  1. Réponses: 18
    Dernier message: 03/07/2009, 16h27
  2. Récupérer le chemin contenu dans une cellule
    Par Geprocor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2008, 15h32
  3. texte barré dans une cellule
    Par nawake dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/03/2008, 17h11
  4. couleurs de texte différentes dans une cellule
    Par mali29 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/09/2007, 12h38
  5. Comment récupérer le texte sélectionné dans une liste déroulante ?
    Par Je-cherche-pfe dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/09/2007, 20h35

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