• Sábado 9 de Noviembre de 2024, 03:42

Autor Tema:  Checkbox En Dbgrid  (Leído 4458 veces)

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Checkbox En Dbgrid
« en: Jueves 28 de Julio de 2005, 17:17 »
0
Hola muchachos:

1. Nos escriben muy poco al foro hay que hacer algo  :blink:
2. este codigo es para crear checkbos dentro de un dbgrid, es muy util por que no esta señido a campo boolean si no para campos integer y varchar, lo unico que hay que hacer de mas es que la grilla no debe tener la opcion dgalwaysdhoweditor en true:

Este codigo es para pintar el check dentro del dbgrid

Citar
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Check: Integer;
begin
{ Compruebo antes si la tabla está vacía. }
 if not IBDataset3.IsEmpty then
 begin
{ Campo 1. }
  if CompareText(Column.FieldName, 'nomesp_comp') = 0 then
  begin
    Check := 0;
  if IBDataset3['nomesp_comp'] = '1' then
   Check := DFCS_CHECKED;
   dbGrid1.Canvas.FillRect(Rect);
   DrawFrameControl(dbGrid1.Canvas.Handle, Rect,
   DFC_BUTTON, DFCS_BUTTONCHECK or Check);
  end
else
dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

{ Campo 2. }
 if CompareText(Column.FieldName, 'item_subcomp') = 0 then
 begin
 Check := 0;
  if IBDataset3['item_subcomp'] = '1' then
   Check := DFCS_CHECKED;
   dbGrid1.Canvas.FillRect(Rect);
   DrawFrameControl(dbGrid1.Canvas.Handle, Rect,
   DFC_BUTTON, DFCS_BUTTONCHECK or Check);
  end
else
dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

{ Campo 3. }
 if CompareText(Column.FieldName, 'flag_subcomp') = 0 then
  begin
  Check := 0;
   if IBDataset3['flag_subcomp'] = '1' then
      Check := DFCS_CHECKED;
      dbGrid1.Canvas.FillRect(Rect);
      DrawFrameControl(dbGrid1.Canvas.Handle, Rect,
     DFC_BUTTON, DFCS_BUTTONCHECK or Check);
   end
 else
   dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
 end;
end;


Este codigo es para cambiar el checkbox de checked a unchecked:  :devil:

Citar
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if Column.FieldName = 'FLAG_SUBCOMP' then
   begin
     IBDataset3.Edit;
     if IBDataset3.FindField('FLAG_SUBCOMP').AsInteger = 1 then
       IBDataset3.FindField('FLAG_SUBCOMP').AsInteger := 0
     else
       IBDataset3.FindField('FLAG_SUBCOMP').AsInteger := 1;
       IBDataset3.Post;
       Dbgrid1.Repaint;
     end;
end;

Espero les sea util  :P , y recuerden escrbir a este foro cada vez que tengan una duda  :alien: , asi las solucionamos todos  :comp:

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]