Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2003
aitken aitken is offline
Miembro
 
Registrado: may 2003
Posts: 22
Poder: 0
aitken Va por buen camino
Poner checkbox en un dbgrid

Buenas,

Necesito poner un checkbox en un dbgrid, para marcar las casillas, en vez de que me ponga true o false. Alguién puede ayudarme??

Gracias,,
Saludos
Responder Con Cita
  #2  
Antiguo 26-05-2003
Avatar de JavierB
JavierB JavierB is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 99
Poder: 21
JavierB Va por buen camino
Hola, aitken.

Este código lo saqué de alguna parte de la güeb:
Código PHP:
procedure TForm1.DBGrid1DrawColumnCell(SenderTObject; const RectTRect;
  
DataColIntegerColumnTColumnStateTGridDrawState);
var
  
CheckInteger;
  
RTRect;
begin
  
if Column.FieldName 'NombreCampo' then
  begin
    DBGrid1
.Canvas.FillRect(Rect);
    
Check := 0;
    if 
Table1.FindField('NombreCampo').AsBoolean then Check := DFCS_CHECKED;
    
R:=Rect;
    
InflateRect(R,-2,-2); //Disminuye el tamaño del CheckBox
    
DrawFrameControl(DBGrid1.Canvas.Handle,R,DFC_BUTTONDFCS_BUTTONCHECK or Check);
  
end;
end;


procedure TForm1.DBGrid1CellClick(ColumnTColumn);
begin
  
if Column.FieldName 'NombreCampo' then
  begin
    Table1
.Edit;
    
Table1.FindField('NombreCampo').AsBoolean:=not Table1.FindField('NombreCampo').AsBoolean;
  
end;
end
Espero que te sirva. Saludos,
__________________
Lo importante no es saber, sino tener el e-mail del que sabe.
Responder Con Cita
  #3  
Antiguo 19-07-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Buenos dias foro, estuve probando este codigo pero no me funciona por que este codigo funciona para un campo boolean obviamente no me funciono por que el campo que yo tengo es entero y tiene dos posibles valores UNO (1) ó CERO (0), intente cambiar este codigo para datos enteros pero no me funciono, si alguien sabe como hacerlo se lo agradeceria mucho
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #4  
Antiguo 19-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pues solo tienes que sustituir la frase ".AsBoolean" por ".AsInteger = 1" en el primer procedimiento.

En el segundo, miras si es igual a 1 y le asignas un cero, en otro caso le asignas un 1; como ves simplemente se trata de romper esa asignación.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 19-07-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Gracias lepe, eso mismo fue lo que hice, use como dice el dicho "la logica de campesino sano" y me salio lo siguiente:

para la primera parte:

Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect
Código Delphi [-]
; 
  DataCol: Integer; Column: TColumn; State: TGridDrawState); 
var 
  Check: Integer; 
  R: TRect; 
begin 
  if Column.FieldName = 'NombreCampo' then 
  begin 
    DBGrid1.Canvas.FillRect(Rect); 
    Check := 0; 
    if Table1.FindField('NombreCampo').AsInteger = 1 then   Check := DFCS_CHECKED; 
    R:=Rect; 
    InflateRect(R,-2,-2); //Disminuye el tamaño del CheckBox 
    DrawFrameControl(DBGrid1.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check); 
  end; 
end;


y para la segunda parte:

Código Delphi [-]
 
procedure TForm1.DBGrid1CellClick(Column: TColumn); 
begin 
  if Column.FieldName = 'NombreCampo' then 
  begin 
    Table1.Edit; 
    Table1.FindField('NombreCampo').AsInteger:=0 //Bueno en realidad aqui si no se si va 1 o 0
Table1.FindField('NombreCampo').AsInteger; 
  end; 
end;

esto fue lo que hice
corrigeme si me equivoco


__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 18:03:30.


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