Club Delphi  
    Paypal   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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Pues con el ejemplo que menciona neftali de Delphi.About a mi si me lo dibuja bien.
__________________

Responder Con Cita
  #2  
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: 22
el_barto Va por buen camino
y que le modificaste aqui para con datos integer:


Código Delphi [-]
if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
     DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
     DBCheckBox1.Top := Rect.Top + DBGrid1.top + 2;
     DBCheckBox1.Width := Rect.Right - Rect.Left;
     DBCheckBox1.Height := Rect.Bottom - Rect.Top;

     DBCheckBox1.Visible := True;
    end

por que a este if no entra nunca dado que el checkbox nunca me lo pone visible
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #3  
Antiguo 19-07-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
La columna del Grid y el DBCheckBox deben tener definido el mismo campo.
En el DBCheckBox hay que definirle las propiedades ValueChecked y ValueUnChecked a los valores que vas a tomar como cierto y falso.
Ejemplo: ValueChecked=1 para verdadero y ValueUnChecked=0 para falso.
__________________

Responder Con Cita
  #4  
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: 22
el_barto Va por buen camino
Sisisi pero no ves que asi me saca un error que dice:

cannot acces field 'prodcre' as type boolean

donde prodcre es mi campo integer
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
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: 22
el_barto Va por buen camino
si ves entonces por eso te pregunto que hay que modificar para que acepte el valor no boolean sino integer.

Ayudame please
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #6  
Antiguo 19-07-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Si, bueno, hasta ahora todas los grids que he visto que ponen un checkbox son para campos tipo boolean.

Lepe: la dbGrid del JVCL pone el checkbox de manera automática si el campo esta definido como boolean (bit para SQL Server)

Dos opciones:
1.- Seguir buscando y jugar con el código para que tome un valor entero como boolean.

(editado)....... despues de leer el post de maeyanes esto no tiene mcuho sentido....

2.- Que definas otro campo tipo boolean en tu base de datos.

Supongo que lo más sencillo sería la segunda opción, de cualquie rmanera dejame ver que más se me ocurrre.
__________________


Última edición por ContraVeneno fecha: 19-07-2005 a las 21:20:48.
Responder Con Cita
  #7  
Antiguo 19-07-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
El problema es que su versión de Interbase es menor a la 7, y esta no ofrece soporte a campos booleanos.
Responder Con Cita
  #8  
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: 22
el_barto Va por buen camino
la segunda no por que uso interbase y no permite crear datos boolean

mira yo tengo este codigo pero tiene dos problemas imprime checkbox fuera de la grilla y no se pueden modificar como en esta.

es decir si el checkbox esta checked no lo puedes pasar a unchecked:


Código Delphi [-]
procedure TForm1.DrawColumnCell(const Rect: TRect; DataCol: Integer;
  Column: TColumn; State: TGridDrawState);
const
  CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
  Exit: boolean;
  IsTrue: boolean;
  CheckBoxRec: TRect;
begin
  // Control del pintado del CheckBox
  Exit := false;

  if not Assigned(Column) or not Assigned(Column.Field) then
    Exit := true;

  // sólo controlamos los campos booleanos o enteros 
  if not Exit and not (Column.Field.DataType in [ftBoolean, ftInteger, ftSmallint]) then
    Exit := true;

  // si el campo es entero, la propiedad Tag de la columna tiene que tener un 1 para imprimir el check
  if ((Column.Field.DataType = ftInteger) or (Column.Field.DataType = ftSmallint)) and
      (Column.Field.Tag = 1) then
    Exit := true;

  // miramos que valor (true/false) hay que asignar al CheckBox
  IsTrue := false;
  if Column.Field.DataType = ftBoolean then
    IsTrue := Column.Field.AsBoolean;
  if ((Column.Field.DataType = ftInteger) or (Column.Field.DataType = ftSmallint)) then
    IsTrue := Column.Field.AsInteger = 1;

  if not Exit then
  begin
    Self.Canvas.FillRect(Rect);
    CheckBoxRec.Left   := Rect.Left + 2;
    CheckBoxRec.Right  := Rect.Right - 2;
    CheckBoxRec.Top    := Rect.Top + 2;
    CheckBoxRec.Bottom := Rect.Bottom - 2;
    DrawFrameControl(Self.Canvas.Handle, CheckBoxRec, DFC_BUTTON, CtrlState[IsTrue]);
  end;
end;

pero el principal problema es que no me imprime el checkbox en la grilla pruebalo y veras
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #9  
Antiguo 20-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cita:
Empezado por el_barto
y que le modificaste aqui para con datos integer:


Código Delphi [-]
if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
     DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
     DBCheckBox1.Top := Rect.Top + DBGrid1.top + 2;
     DBCheckBox1.Width := Rect.Right - Rect.Left;
     DBCheckBox1.Height := Rect.Bottom - Rect.Top;

     DBCheckBox1.Visible := True;
    end

por que a este if no entra nunca dado que el checkbox nunca me lo pone visible
Ya llego tarde porque lo resolviste de otra forma; solo comentar que en ese if
no entra nunca porque no es DBCheckBox1.DataField sino
DBCheckBox1.FieldName
.

ContraVeneno, gracias por la info del checkbox en la JVCL. En realidad
yo necesitaba el checkbox sin asociarlo a un campo, pero es bueno saber que
lo tiene para campos boolean.

el barto, gracias por corroborar que solo hace falta un Repaint en el
grid para actualizar el campo. Si los datos vienen de un query, muy
posiblemente haya que cerrarlo y abrirlo de nuevo para que tome los datos de
nuevo.

Un saludo a todos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
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: 22
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
  #11  
Antiguo 05-09-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Poder: 21
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
  #12  
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
  #13  
Antiguo 26-08-2017
lavtaro lavtaro is offline
Miembro
 
Registrado: jun 2003
Ubicación: Chile
Posts: 90
Poder: 23
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


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


La franja horaria es GMT +2. Ahora son las 09:19:32.


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