Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2007
zurdosoft zurdosoft is offline
Miembro
 
Registrado: may 2005
Ubicación: Villa Maria, Cordoba, Argentina
Posts: 16
Poder: 0
zurdosoft Va por buen camino
Checkbox en DbGrid

(Acentos omitidos a proposito)
Neftali tiene razon, el tema se ha tratado varias veces. He probado mucha soluciones y ninguna funciona perfectamente.
Esto lo encontré en la web y es del año 2002 pero es excelente.
Para probarlo puse una DbGrid y un ClientDataSet, cree los campos SEL(boolean) Y DESCRIPCION(string). Luego CreateDataSet y ejecute.
La primera vez por supuesto salta el error de que no halla el archivo 'base'.
Cargue algunos datos en Descripcion y Cerre.
Volvi a abrir y PERFECTO.
Espero que les sirva, es mas de lo mismo pero anda.
Felices Fiestas.

Código Delphi [-]
unit Ubase;

// Articulo Original
// http://www.planet-source-code.com/vb...d=779&lngWId=7
// Modificado por zurdosoft@aol.com

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, DBClient;

type
  TForm1 = class(TForm)
    cds: TClientDataSet;
    ds: TDataSource;
    DBGrid: TDBGrid;
    cdssel: TBooleanField;
    cdsDescripcion: TStringField;
    cdsPrecio: TCurrencyField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGridCellClick(Column: TColumn);
    procedure DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGridColEnter(Sender: TObject);
    procedure DBGridColExit(Sender: TObject);
  private
    { Private declarations }
    FOriginalOptions : TDBGridOptions;
    procedure SaveBoolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  cds.LoadFromFile('base');
  Self.FOriginalOptions:= Self.DBGrid.Options;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  cds.SaveToFile('base');
end;

procedure TForm1.DBGridCellClick(Column: TColumn);
begin
  if Self.DBGrid.SelectedField.DataType = ftBoolean then
    SaveBoolean();
end;
// SAVEBOOLEAN
procedure TForm1.SaveBoolean;
begin
 Self.DBGrid.SelectedField.Dataset.Edit;
 Self.DBGrid.SelectedField.AsBoolean := not Self.DBGrid.SelectedField.AsBoolean;
 Self.DBGrid.SelectedField.Dataset.Post;
end;


procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
Const
  CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
              DFCS_BUTTONCHECK or DFCS_CHECKED);
var
 CheckBoxRectangle : TRect;
begin
 if Column.Field.DataType = ftBoolean then
   begin
     Self.DBGrid.Canvas.FillRect(Rect);
     CheckBoxRectangle.Left := Rect.Left + 2;
     CheckBoxRectangle.Right := Rect.Right - 2;
     CheckBoxRectangle.Top := Rect.Top + 2;
     CheckBoxRectangle.Bottom := Rect.Bottom - 2;
     DrawFrameControl(Self.DBGrid.Canvas.Handle,
                      CheckBoxRectangle,
                      DFC_BUTTON,
                      CtrlState[Column.Field.AsBoolean]);
   end;
end;

procedure TForm1.DBGridColEnter(Sender: TObject);
begin
  if Self.DBGrid.SelectedField.DataType = ftBoolean then
    begin
      Self.FOriginalOptions := Self.DBGrid.Options;
      Self.DBGrid.Options := Self.DBGrid.Options - [dgEditing];
    end;
end;

procedure TForm1.DBGridColExit(Sender: TObject);
begin
  if Self.DBGrid.SelectedField.DataType = ftBoolean then
    Self.DBGrid.Options := Self.FOriginalOptions;
end;

end.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fila del TDBGrid Val Conexión con bases de datos 3 20-06-2007 13:45:03
TDBGrid caperucitaazul C++ Builder 10 07-02-2006 23:27:30
TDBGrid didier Varios 1 05-04-2005 21:58:15
problema tdbgrid chele Conexión con bases de datos 11 08-06-2004 18:58:05
Problemas con TDBGrid Novás Varios 0 30-01-2004 10:32:20


La franja horaria es GMT +2. Ahora son las 09:06:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi