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
  #21  
Antiguo 28-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
ATENCIÓN: Para que esta solucion sea efectiva hay que tener en false la opcion dgAlwaysShowEditor
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #22  
Antiguo 20-10-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 19
dmagui Va por buen camino
Cita:
Empezado por el_barto
Gracias por tu dedicacion eres un excelente forista n-mil gracias pero mira el codigo que use:

uso esto para dibujarlo:

Código Delphi [-]
 
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 IBTable1.IsEmpty then
begin
{ Campo 1. }
if CompareText(Column.FieldName, 'cod_per') = 0 then
begin
Check := 0;
if IBTable1['cod_per'] = '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, 'user_name') = 0 then
begin
Check := 0;
if IBTable1['user_name'] = '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, 'prodcre') = 0 then
begin
Check := 0;
if IBTable1['prodcre'] = '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;
Hola pues fijense muchachos que este codigo no funciona del todo bien, si yo deseo que en mi grid existan dos campos de tipo CheckBox no me lo hace solo me muestra el ultimo, en este caso fijo que muestra en el campo prodcre el checkbox, como podria corregir este error ?, ya la estuve revisando bien y no lo he logrado

Gracias por sus posibles respuestas
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde.
Responder Con Cita
  #23  
Antiguo 21-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
 
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 IBTable1.IsEmpty then
begin
{ Campo 1. }
if CompareText(Column.FieldName, 'cod_per') = 0 then
begin
Check := 0;
if IBTable1['cod_per'] = '1' then
Check := DFCS_CHECKED;
dbGrid1.Canvas.FillRect(Rect);
DrawFrameControl(dbGrid1.Canvas.Handle, Rect,
DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end
else 

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

{ Campo 3. }
if CompareText(Column.FieldName, 'prodcre') = 0 then
begin
Check := 0;
if IBTable1['prodcre'] = '1' then
Check := DFCS_CHECKED;
dbGrid1.Canvas.FillRect(Rect);
DrawFrameControl(dbGrid1.Canvas.Handle, Rect,
DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end
else
// solo se llama si no es ningun campo check
dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #24  
Antiguo 05-09-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Poder: 18
mcalmanovici Va por buen camino
Cuando hago dos veces click en el comboBox desaparece el mismo

Hola gente:
revivo este hilo para ver si me pueden ayudar con el problemita que tengo...
Me sirvio un montón todo lo que pusieron en el hilo este...
Puse en mi programa el código prupuesto por "el_barto", solo que lo hice para string y no booleano... Les copio el código para que no tengan que revisar hacia atras:

Código Delphi [-]
procedure TwMain.DBGrid4CellClick(Column: TColumn);//Cambia el estado del checkBox si es que el usuario hace un click sobre él.
begin
  if Column.FieldName = 'administrador' then
  begin
    CDSAbmUsuario.Edit;
    if CDSAbmUsuario.FindField('administrador').AsString = 'S' then
      CDSAbmUsuario.FindField('administrador').AsString := 'N'
    else
      CDSAbmUsuario.FindField('administrador').AsString := 'S';
    CDSAbmUsuario.Post;
    Dbgrid4.Repaint;
   end;
end;
procedure TwMain.DBGrid4DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);//Dibuja el checkBox en el dbGrid de usuarios (dbGrid4).
var
  Check: Integer;
  R: TRect;
begin
  if Column.FieldName = 'administrador' then //Primero que nada me fijo si es el campo administrador que yo quiero que sea checkBox.
  begin
    DBGrid1.Canvas.FillRect(Rect);//Construye la región rectangular del checkBox.
    Check := 0;
    if CDSAbmUsuario.FindField('administrador').AsString = 'S' then
      Check := DFCS_CHECKED; //Pone tilde en el checkBox si el campo administrador es 'S'
    R:=Rect;
    InflateRect(R,-2,-2); //Disminuye el tamaño del CheckBox
    DrawFrameControl(DBGrid4.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check);
  end;
end;
Me esta andando bastante bien el comboBox en el dbgrid...
El problema es el siguiente: hago click en el comboBox y me anda perfecto, ahora cuando vuelvo a hacer click en el mismo registro sin irme a otro desaparece el comboBox. Para que aparezca me tengo que ir a otro registro de dbgrid.....
No sé si alguien tiene alguna solución para este problema...

Desde ya agradezco sus repuestas.
Muchas gracias.
Mariano.

Última edición por marcoszorrilla fecha: 04-02-2010 a las 06:52:52.
Responder Con Cita
  #25  
Antiguo 04-02-2010
mcaro mcaro is offline
Registrado
 
Registrado: jun 2007
Posts: 1
Poder: 0
mcaro Va por buen camino
JvDBUltimGrid y JvDBCheckBox

Hola. sobre el tema de poner un check en una grilla yo utilice los componentes JvDBUltimGrid y JvDBCheckBox, los dos asociados al mismo dataSource.
En la propiedad "Edit Control" de JvDBUltimGrid seleccione que campos de la grilla queria asociar con los JvDBCheckBox
Responder Con Cita
  #26  
Antiguo 26-08-2017
lavtaro lavtaro is offline
Miembro
 
Registrado: jun 2003
Ubicación: Chile
Posts: 88
Poder: 21
lavtaro Va por buen camino
Gracias por el código, revisando los post 26-08-2017 lo ocupé y funcionó, saludos.
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 04:30:03.


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