salut tout le monde
je n'arrive pas rendre ma dBGRID multiline
excuser mon ignorance :oops:
Version imprimable
salut tout le monde
je n'arrive pas rendre ma dBGRID multiline
excuser mon ignorance :oops:
Options - > dgMultiselect à true
je crois que vous mavez pas compris
exemple j'ai un champs texte tres long mais dans ma dBGRID je ne veut pas faire un resize dans la colone je veut faire comme execel lorsque il renvois a ligne automatiquement
Bonjour,
Une solution (à tester) serait d'intercepter (dans l'évènement OnKEYDOWN) l'appui sur la touche ENTER puis au lieu de valider les données (comportement par défaut), ajouter #13#10 au contenu du mémo (#13#10 c'est pour aller à la ligne).
Je pense que tu dois pouvoir obtenir ce que tu désires en dessinant toi-même le contenu de la colonne en cause.
Dans l'évenement OnDrawColumnCell il te suffit de tester le numéro de colonne puis d'afficher le contenu de la case en utilisant la procédure DrawText . En mettant la valeur Dt_Wordbreak dans le format d'affichage.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); Var S:String; // ta chaine à afficher F:Integer; // le format d'affichage begin If Column=NumDeColonneSouhaite then begin Canvas.Brush.Color:=clWhite; // A toi de choisir la couleur Canvas.fillrect(Rect); // pour effacer le fond S:=Column.Field.DisplayText; F:=ord(Column.Alignment); If F>0 Then F:=F Xor 3; // ajustage automatique de l'alignement F:=F+dt_Wordbreak; Drawtext(Grille.canvas.Handle,Pchar(S),Length(S),Rect,F); end; end;
La procedure Drawtext est mal renseignée dans Delphi. Toutes les options d'affichage sont définies dans la valeur qui défini le format (ici la variable F). Il te faudra peut-être ajouter d'autres valeurs à F pour obtenir un résultat impeccable.
Pour de plus amples renseignements voir ici :
http://<br /> http://msdn.microsoft...text.asp<br />