(MEMO) dans DBGrid

Signaler
Messages postés
24
Date d'inscription
vendredi 13 septembre 2002
Statut
Membre
Dernière intervention
9 octobre 2003
-
Messages postés
19
Date d'inscription
vendredi 31 août 2007
Statut
Membre
Dernière intervention
12 août 2009
-
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

Messages postés
58
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
1 octobre 2004

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
Messages postés
24
Date d'inscription
vendredi 13 septembre 2002
Statut
Membre
Dernière intervention
9 octobre 2003

Ok, je te remercie !
je vais faire une fenetre a part !!! :-(

A+
Kundun
Messages postés
2
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
29 février 2008

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>
Messages postés
2
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
29 février 2008

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>
Messages postés
19
Date d'inscription
vendredi 31 août 2007
Statut
Membre
Dernière intervention
12 août 2009

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.