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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| procedure TForm1.dbGrid1DrawColumnCell(
Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if ( Column.FieldName ='proj_ann') then
// if (column est une colonne 'case à cocher') then
begin
{ on efface la cellule }
dbGrid1.Canvas.FillRect(Rect);
{ si coché }
if ( Column.FieldName ='proj_ann' ) then
// if (column.Field a la valeur coché) then
begin
// DmImages.imgCheck.draw(dbGrid1.Canvas,
imageList1.draw(dbGrid1.Canvas,
rect.Left + ((rect.Right - rect.Left - imageList1.Width) div 2),
rect.Top,
1);
end
{ sinon, pas coché }
else
begin
imageList1.draw(dbGrid1.Canvas,
rect.Left + ((rect.Right - rect.Left - imageList1.Width) div 2),
rect.Top,
0);
end
end
{ si column ne correspond pas à une case à cocher, }
{ on ne s'occupe pas du dessin de la cellule, on }
{ transmet donc à DefaultDrawColumnCell }
else
begin
dbGrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
end;
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
with dbGrid1 do
begin
{ La grille doit être modifiable... }
if (not ReadOnly)
{ ainsi que le dataset }
and( DataSource1.DataSet.CanModify )
{ Et la zone sur laquelle on a cliqué doit }
{ être une case à cocher }
and (SelectedField.FieldName = 'proj_ann' )
// or (test sur un autre nom de zone)
// or ...)
then
begin
DataSource1.DataSet.Edit;
SelectedField.AsBoolean := not SelectedField.AsBoolean;
DataSource1.DataSet.Post;
end;
end;
end; |
Partager