Malgré votre aide je n'arrive toujours pas à obtenir ce que je veux à l'écran.
Voila mon cas :
J'ulitise 2 tStringGrid un pour les titres (grid1) , et un pour les données (grid2).
Pour faire simple :
Si j'utilise grid2 avec la Grille (GridLineWidth = 1), quand je veux cacher certaines lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for j:=0 to grid2.rowCount-1 do if(...) then grid2.rowHeights[j] := 0 ;
Il m'affiche un amas de lignes grises correspondant aux lignes cachées.
Pour ce faire j'ai donc décider de redessiner la grille moi même :
j'ai mis
Code : Sélectionner tout - Visualiser dans une fenêtre à part grid2.DefaultDrawing := False ;
Ma procédure DrawCell
Il ne me fait pas vraiment ce que je veux , en effet, il me dessine bien une grille mais plus épaisse que la grille par défaut. J'ai essayé avec la méthode Canvas.Rectangle : j'ai bien une grille qui se dessine mais le bord est toujours aussis épais et il m'efface mon texte.
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 procedure Tfrm1.grid2DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var taille, hauteur : integer; Begin hauteur := grid2.defaultRowHeight ; taille := grid2.canvas.font.size ; try grid2.canvas.font.color := clBlack ; if grid2.RowHeights[aRow]=0 then exit ; if ( grid2.row = Arow ) then begin grid2.canvas.font.style := [fsBold] ; grid2.canvas.font.size := taille + 2 ; grid2.canvas.brush.Color := clWindow ; grid2.RowHeights[aRow] := hauteur + 5 ; end else grid2.RowHeights[aRow] := hauteur ; grid2.Canvas.FillRect(Rect); grid2.Canvas.TextRect(Rect, Rect.Left, Rect.Top, grid2.Cells[ACol,ARow]); if gdFocused in State then grid2.Canvas.DrawFocusRect(Rect); grid2.canvas.TextRect(Rect, Rect.Left, Rect.Top, grid2.Cells[ACol,ARow]); grid2.canvas.brush.Color := clsilver ; grid2.Canvas.FrameRect(Rect) ; End;
Si quelqu'un a la solution merci d'avance.
Partager