(MEMO) dans DBGrid

Kundun2 Messages postés 24 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 octobre 2003 - 2 sept. 2003 à 16:27
b20n00 Messages postés 19 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 août 2009 - 5 mars 2008 à 23:55
Bonjour,
j'aimerais savoir comment je peux faire pour afficher dans un DBGrid le contenu d'un champ Memo provenant d'une table ?
Pour l'instant il y à afficher (MEMO)

Merci d'avance

Kundun

5 réponses

sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
3 sept. 2003 à 11:26
Il n'est pas possible de faire afficher les contenus des memos dans un DBGRID donc comme solutions tu peux mettre l'affichage d'une fenetre avec le contenu du Memo sur le double clique ou bien ajouter un dbmemo dans ta fenetre qui affiche ce que contiens ton Memo quand une ligne est selectionne...
A+
Sablor
0
Kundun2 Messages postés 24 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 octobre 2003
3 sept. 2003 à 11:35
Ok, je te remercie !
je vais faire une fenetre a part !!! :-(

A+
Kundun
0
doumi1971 Messages postés 2 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 29 février 2008
29 févr. 2008 à 22:24
bonsoir;

Le DBMemo sera affiché lors de la saisie d'un champ d'une DBGrid par un double-click sur la cellule ou l'appui sur le bouton '...'.
1-En premier lieu pour afficher le bouton '...' dans la cellule il faut mettre à cbsEllipsis la propriété ButtonStyle de la colonne.
2-Ensuite il faut renseigner les évènements OnEditButtonClick et OnDrawColumnCell de la grille :
Voici donc le code:
<code class="delphi_keyword1"> procedure 
TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
 With 
DbMemo1
Do
 Begin 

Visible: =
True
;
SetFocus;
 End 
;
end
;

 procedure 
TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const
Rect: TRect;
DataCol:
Integer
; Column: TColumn; State: TGridDrawState);
 begin 
If
(gdSelected
 In 
State)
And
(DataCol=
1
)
 Then 
Begin

DBMemo1.Left:= DBGrid1.Left+Rect.Left;
DBMemo1.Top := DBGrid1.Top +Rect.Top;
 End 
;
end
;


En fin il faut placer le code suivant dans l'évènement OnExit du DBMemo et AfterPost/AfterCancel du DataSet lié à la grille :
Code:

DBMemo1.Visible:=<code class="delphi_literal2">False
;

Note:le contenue de ce blob ne doit generalement pas trés grand.

</code>

</code>
0
doumi1971 Messages postés 2 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 29 février 2008
29 févr. 2008 à 22:25
bonsoir;




Le DBMemo sera affiché lors de la saisie d'un champ d'une DBGrid par un double-click sur la cellule ou l'appui sur le bouton '...'.
1-En premier lieu pour afficher le bouton '...' dans la cellule il faut mettre à cbsEllipsis la propriété ButtonStyle de la colonne.
2-Ensuite il faut renseigner les évènements OnEditButtonClick et OnDrawColumnCell de la grille :
Voici donc le code:




<code class="delphi_keyword1">

procedure

TForm1.DBGrid1EditButtonClick(Sender: TObject);
 begin 
With
DbMemo1
 Do 
Begin

Visible:=
True
;
SetFocus;
 End 
;
end
;

 procedure 
TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const
Rect: TRect;
DataCol:
Integer
; Column: TColumn; State: TGridDrawState);
 begin 
If
(gdSelected
 In 
State)
And
(DataCol=
1
)
 Then 
Begin

DBMemo1.Left:= DBGrid1.Left+Rect.Left;
DBMemo1.Top := DBGrid1.Top +Rect.Top;
 End 
;
end
;

En fin il faut placer le code suivant dans l'évènement OnExit du DBMemo et AfterPost/AfterCancel du DataSet lié à la grille :



Code:

DBMemo1.Visible:=<code class="delphi_literal2">False
;

Note:le contenue de ce blob ne doit generalement pas trés grand.


</code>


</code>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
b20n00 Messages postés 19 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 août 2009
5 mars 2008 à 23:55
Tu peux utiliser un champ calculé de type string (attention:la taille doit être >= la taille estimé au champ blob (c-à-d mémo)):
en indiquant dans l'évenement onGetData de ce champ que la valeur est en fonction de la valeur de ce champ de type Blob (mémo).


Revenez à l'aide pour savoir comment utiliser les champs calculé et l'évenement OnGetData des champs de type TField, je pense, (car je n'ai pas Delphi sur cette machine).


mais attention au saut de ligne il faut les remplacé par des tabulation ou espace pour simplifier  la consultation.
Je l'ai déja utilisé et ça a marché.


C'est ma première participation.
0
Rejoignez-nous