Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2004
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 20
jzk Va por buen camino
Celdas de un DBgrid

Hola a tod@s,

Tengo un dbgrid que utilizo para mostrar un calendario donde en el eje "X" muestro los días y en el "Y" las tareas que tengo pendientes por hacer.

Mi intención es si para el lunes (por ejemplo) tengo la tarea nº1 asignada, la casilla que corresponde en el DBgrid colorear de color rojo y si no es así manternerlo del color predefinido.

Como puedo acceder a una celda concreta de una determinada casilla para poder de esta manera modificar el color de esta.

Un saludo a tod@s y gracias por su atención.
Responder Con Cita
  #2  
Antiguo 13-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jzk
Como puedo acceder a una celda concreta de una determinada casilla para poder de esta manera modificar el color de esta.
Esto no es posible. Es decir, el StringGrid no maneja este tipo de propiedades por casilla. Lo que debes hacer es poner la propiedad DefaultDrawing del StringGrid en false y manejar su evento OnDrawCell para pintar tu mismo el contenido de la celda usando el Canvas del StringGrid. El evento te pasa como parámetro las corrdenadas de la casilla así como el rectángulo en donde debes pintar. Tú debes entonces verificar si las coordenadas corresponden o no a la casilla de una tarea asignada y pintar de rojo en tal caso (Canvas.Brush.Color := clRed; Canvas.FillRect(Rect)).

Busca por colorear stringgrid en los foros y encontrarás algunos ejemplos del uso del evento.

// Saludos
Responder Con Cita
  #3  
Antiguo 13-12-2004
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 20
jzk Va por buen camino
Gracias de nuevo....

Última edición por jzk fecha: 14-12-2004 a las 08:33:00.
Responder Con Cita
  #4  
Antiguo 14-12-2004
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 20
jzk Va por buen camino
Creía que estaba solucionada mi duda pero me ha surgido una pequeña pega y es que el evento OnDrawCell no aparece en el objeto que utilizo, ya que se trata de un DBGrid.

De este modo, puedo utilizar el evento OnDrawColumnCell como sustituto, pero este no pasa por parametro el número de fila aunque si el de columna de manera que no puedo comprobar el valor de la casilla.

Tambíen aprovecho para que me verifiqueis si la función/procedimiento para obtener el valor de la casilla es:

DBGrid1.Cells[Acol,Arow]

Graciassssssssss
Responder Con Cita
  #5  
Antiguo 14-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jzk
Tengo un dbgrid...
Cita:
Empezado por roman
Esto no es posible. Es decir, el StringGrid...
Creo que cada uno váis en una dirección, distintas, por cierto...


Cita:
Empezado por jzk
Tengo un dbgrid que utilizo para mostrar un calendario donde en el eje "X" muestro los días y en el "Y" las tareas que tengo pendientes por hacer.
Mi intención es si para el lunes (por ejemplo) tengo la tarea nº1 asignada, la casilla que corresponde en el DBgrid colorear de color rojo y si no es así manternerlo del color predefinido.
Si utilizas un DBGrid, entiendo que por debajo tienes una tabla/consulta con los datos necesarios; La manera más clara para colorear celdas de un DBGrid es pensar en los datos, no en las celdas.
Segun lo que explicas, tu tabla debería ser una tabla de tareas, con un campo para cada día de la semana.
(a) Si esto es correcto seguir.
(b) Si no es correcto (entonces es que no me he enterado de nada) goto fin.

El evento que debes utilizar en un DBGrid es el OnDrawColumnCell. Preguntas por el valor del campo y si hace falta modificas el color. Prueba con algo como ésto:

Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin 
  // La columna no está seleccionada?
  if (State = []) then begin
    // El valor de la celda es Asignado? (suponiendo A=Asignado)
    if (DBGrid1.Columns[Datacol].Field.AsString = 'A') then begin
      // Cambia el color de fondo de la celda a ROJO.
      DBGrid1.Canvas.Brush.Color := clRed;
      // Manda pintar la celda
      DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
    end;
  end;
end;


También puedes revisar éste hilo, ahí tienes algunos enlaces.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 14-12-2004
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 20
jzk Va por buen camino
No si si me valdrá pero reirme un rato si que me he reido (goto fin)

Ahora te digo algo.
Responder Con Cita
  #7  
Antiguo 14-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vaya! Debo recordar ponerme los lentes antes de contestar

// 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 03:55:43.


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