Bonjour,

j'utilise un dérivé de tStringGrid nommé tdatagrid (source ci-joint) sur un projet delphi5.

J'essaie de faire apparaître une case à cocher dans une de mes colonnes de mon datagrid. Mais voila petit soucis: ça marche avec tstringgrid mais pas avec mon objet dérivé.

Le code de création de ma case:
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
 
constructor Tform1.create(AOwner: TComponent;);
var
bmp:Tbitmap;
Begin
FCheck:=   TBitmap.Create;
    FNoCheck:=   TBitmap.Create;
    bmp:=   TBitmap.create;
    try
      bmp.handle   :=   LoadBitmap(   0,   PChar(OBM_CHECKBOXES   ));
      With   FNoCheck   Do   Begin
        width   :=   bmp.width   div   4;
        height   :=   bmp.height   div   3;
        canvas.copyrect(   canvas.cliprect,   bmp.canvas,   canvas.cliprect   );
      End;
      With   FCheck   Do   Begin
        width   :=   bmp.width   div   4;
        height   :=   bmp.height   div   3;
        canvas.copyrect(canvas.cliprect,   bmp.canvas,   rect(   width,   0,   2*width,   height   ));
      End;
    finally
      bmp.free
    end;
End;
Le code pour faire apparaitre ma case:
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
 
procedure Tform1.maGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  grid: TdataGrid;
Begin
If not ( gdFixed In State ) and ( ACol = 11 ) Then Begin
  grid:= Sender As TdataGrid;
  With grid.Canvas Do Begin
    brush.color := $E0E0E0;
    // checkboxes look better on a non-white background
    Fillrect( rect );
    // listbox state is encoded by the Objects property
    If Assigned(grid.Objects[aCol, aRow]) Then  
      Draw( (rect.right + rect.left - FCheck.width) div 2,
               (rect.bottom + rect.top - FCheck.height) div 2, FCheck )
    Else
      Draw( (rect.right + rect.left - FNoCheck.width) div 2,
               (rect.bottom + rect.top - FNoCheck.height) div 2, FNoCheck )
   End;
End;
End;
Merci pour votre aide