Bonjour,
J'utilise un DBGrid s'appuyant sur des données présentes dans un fichier DBF. Une colonne de ce fichier est de type ftMemo.
Pour l'afficher convenablement dans mon DBgrid j'ai eu recours à DrawColumnCell et PrepareCanvas.
J'arrive donc à afficher le contenu du mémo dans la cellule du DBGrid avec retour à la ligne et à colorer une ligne entière en fonction de la valeur d'une colonne.
Je bloque sur la hauteur de la ligne. J'aimerais la faire varier en fonction du contenu de la colonne mémo.
Mais impossible de déterminer comment agir sur cette hauteur. J'ai pensé à cela :
La propriété DBGrid.Canvas.Height est protected, et pas de méthode SetHeight ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 procedure Tf_menu.grid_demandePrepareCanvas(sender: TObject; DataCol: Integer; Column: TColumn; AState: TGridDrawState); var grid_style: TTextStyle; t_comment: String; h_comment_mini, h_comment, nb_car_ligne, h_ligne, nb_lignes:integer; begin t_comment := ''; nb_car_ligne := 75; h_comment_mini := 20; h_ligne := 20; t_comment := grid_demande.DataSource.DataSet.FieldByName('descriptio').AsString; nb_lignes := Ceil( Length( t_comment ) / nb_car_ligne ); h_comment := nb_lignes * h_ligne; if h_comment < h_comment_mini then h_comment := h_comment_mini; // Hauteur de ligne adaptée au mémo grid_demande.Canvas.Height := h_comment; // Word wrap dans celulle MEMO grid_style := grid_demande.Canvas.TextStyle; grid_style.SingleLine := false; grid_style.Wordbreak := true; grid_demande.Canvas.TextStyle := grid_style; // Ligne grisée si demande soldée if grid_demande.DataSource.DataSet.FieldByName('etat').AsString = 'Soldée' then begin grid_demande.Canvas.Brush.Color := clGray; grid_demande.Canvas.Font.Color := clWhite; end; end;
Avez-vous une idée sur comment faire ?
D'avance merci
Partager