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 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: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;
NABIL74
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:
A+
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;
NABIL74
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 .....
Salut,
@ Andry :
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.
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).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.
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,....?
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.Sinon, tu peux jouer sur Key et Shift pour construire manuellement le texte saisie. Mais ça c'est une longue histoire.
A+
NABIL74
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function TMyDBGrid.getInplaceEditor: TInplaceEdit; begin result := InplaceEditor; end;
Une Exhumation
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager