Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 25-04-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 0
Dedalo Va por buen camino
Esto lo vi en Internet, no recuerdo donde, y funciona razonablemente bien.

Código Delphi [-]
 
 

unit MiUnidad;
 
interface
 
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ExtCtrls, DBCtrls, StdCtrls, Mask, Db, DBTables, ComCtrls, ToolWin,
 Grids, DBGrids, Menus, Buttons,Registry, ImgList, USelDatos, Limite;
 
Const
 CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
 
..... //Aqui va la definicion del form
 
implementation
 
//Asigna los siguientes eventos a todos los DBGrid que tengas en tu form con campos Boolean.
 
// El siguiente evento cambia el estado del boolean Cuando clicamos en el
procedure TForm.DBGCellClick(Column: TColumn);
begin
 if (Column.Field.DataType = ftBoolean) then
 begin
  Column.Field.DataSet.Edit;
  Column.Field.AsBoolean := not Column.Field.AsBoolean;
  Column.Field.Dataset.Post;
 end;
end;
 
// El siguiente evento cambia el estado si pulsamos espacio estando seleccionado un campo boolean
procedure TForm.DBGKeyPress(Sender: TObject; var Key: Char);
begin
 with TDBgrid(Sender) do
 begin
  if (Key = ' ') and (SelectedField.DataType = ftBoolean) then
  begin
   SelectedField.Dataset.Edit;
   SelectedField.AsBoolean := not SelectedField.AsBoolean;
   SelectedField.Dataset.Post;
  end;
 end;
end;
 
// El siguinete evento dibuja la casilla con o sin marca segun el estado del campo
procedure TForm.DBGDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 with TDBgrid(Sender) do
 begin
  if Column.Field.DataType = ftBoolean then
  begin
   Canvas.FillRect(Rect);
   DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);
  end;
 end;
end;
 
// Aqui evitamos que la celda se ponga en modo edit aruinando la estetica
procedure TForm.DBGColEnter(Sender: TObject);
begin
 if TDBgrid(Sender).SelectedField.DataType = ftBoolean then
  TDBgrid(Sender).Options := TDBgrid(Sender).Options - [dgEditing];
end;
 
// Aqui reponemos el estado inicial al abandonar la celda.
procedure TForm.DBGColExit(Sender: TObject);
begin
 if TDBgrid(Sender).SelectedField.DataType = ftBoolean then TDBgrid(Sender).Options := Opciones;
end;


end.

Última edición por Dedalo fecha: 25-04-2008 a las 23:08:28.
Responder Con Cita
 



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
Pasar lineas de in dbgrid a otro dbgrid look OOP 3 21-09-2007 23:16:29
PickList DBGrid (Pregunta acerca de los DBGRID) lazarous Varios 1 10-01-2006 09:53:12
Como extraer datos de un DBgrid a otro DBgrid mickey Conexión con bases de datos 13 29-01-2004 05:05:30


La franja horaria es GMT +2. Ahora son las 18:39:44.


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