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:
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
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;
Merci pour votre aide
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;
Partager