Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2021
kainchu3102 kainchu3102 is offline
Miembro
 
Registrado: jul 2021
Posts: 79
Poder: 3
kainchu3102 Va por buen camino
DBGRID DELPHI CAMBIAR COLOR CON UN FDQwery

Hola,buenas gente, queria hacerle una consulta sobre el DBGRID en Delphi
Mi consulta es la siguiente como puedo hacer para que cambien de color las Filas pero segun la consulta que haga con un FDQUERY
Osea con el Drawn Column Perfecto pero cuando voy a hacer una consulta con el FDQUERY las Coloreada vuelve a los colores normales
Código Delphi [-]
procedure TFORMRESULTADOS.DBGRESULTADOSDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataModule1.FDTRESULTADOS.FieldByName('int_res').AsString <> ''  then
  begin
  DBGRESULTADOS.Canvas.Brush.Color := clMoneyGreen;
   DBGRESULTADOS.Canvas.Font.Color := clWhite;
    DBGRESULTADOS.DefaultDrawColumnCell(Rect, DataCol, Column, State);



Ese el codigo pero veo que estoy utilizando un FDTABLE pero como podria cambiar para que sea un QUERY POR EJEMPLO:
Código Delphi [-]
if DataModule1.FDQBUSQUEDA.FieldByName('int_res').AsString <> ''  then

PERO ME SALE EL ERROR FDTRESULTADOS: field 'int_res' not found

Última edición por Neftali [Germán.Estévez] fecha: 07-07-2021 a las 09:46:59. Razón: Añadir TAGs al código
Responder Con Cita
  #2  
Antiguo 07-07-2021
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.275
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
Por favor, utiliza los TAGs adecuados cuando añadas código a los mensajes.
He modificado tu mensaje para añadirlos.
__________________
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
  #3  
Antiguo 07-07-2021
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.275
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
Entiendo que el problema es que, aunque FDTRESULTADOS y FDQBUSQUEDA tienen ambos el campo int_res, no puedes hacer referencia directamente a ellos en el evento.

En ese caso, puedes acceder al Dataset (sea FDTRESULTADOS o FDQBUSQUEDA) utilizando el Sender en tiempo de ejecución.
Prueba con un código como este:

Código Delphi [-]
var
  ds:TDataset;
begin
  ds := nil;
  // el sender debería ser un TDBGrid (pero lo comprobamos...)
  if (Sender is TDBGrid) then
    ds := TDBGrid(Sender).DataSource.DataSet;
  // Aquí, ds será FDTRESULTADOS o FDQBUSQUEDA

  // Si no está asignado, salimos...
  if not Assigned(ds) then
    Exit;
  // comprobamos el campo...
  if (ds.FieldByName('int_res').AsString <> '')  then begin
    DBGrid1.Canvas.Brush.Color := clMoneyGreen;
    DBGrid1.Canvas.Font.Color := clWhite;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;

Te lo pongo de memoria, si te falla algo dímelo...
__________________
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
  #4  
Antiguo 07-07-2021
kainchu3102 kainchu3102 is offline
Miembro
 
Registrado: jul 2021
Posts: 79
Poder: 3
kainchu3102 Va por buen camino
Hola German

ME APARECE ESTE ERROR

Undeclared identifier: 'TDataset'
Responder Con Cita
  #5  
Antiguo 08-07-2021
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por kainchu3102 Ver Mensaje
ME APARECE ESTE ERROR

Undeclared identifier: 'TDataset'
Agrega DB a uses:
Código Delphi [-]
uses ..., DB;


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 08-07-2021
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.275
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 ecfisa Ver Mensaje
Agrega DB a uses:
Código Delphi [-]
uses ..., DB;

O creo recordar, segun la versión:

Código Delphi [-]
uses
   ..., Data.DB;
__________________
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
  #7  
Antiguo 15-07-2021
kainchu3102 kainchu3102 is offline
Miembro
 
Registrado: jul 2021
Posts: 79
Poder: 3
kainchu3102 Va por buen camino
Excelente

Te agradezco mucho me sirvio de mucho tu ayuda, pero tengo una duda se cambiar de color con la condicion, mi duda es: Como puedo hacer para que vuelva a la normalidad haciendo un click en la fila. y cuando le haga click a otra fila vuelva a ponerse de color. se entendio?
Responder Con Cita
  #8  
Antiguo 15-07-2021
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Podes agregar una columna a tu tabla que sirva para saber si la fila debe ser pintada o no.

Un ejemplo muy simplificado:
Código Delphi [-]
...
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  DS : TDataSet;
begin
  DS := DBGrid1.DataSource.DataSet;
  if  DS.FieldByName( 'BOOL' ).AsInteger = 1  then
    DBGrid1.Canvas.Brush.Color := clRed; // color de tu gusto
  DBGrid1.DefaultDrawColumnCell(Rect, Datacol, Column, State);
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
var
  DS : TDataSet;
begin
  DS := DBGrid1.DataSource.DataSet;
  DS.Edit;
  if DS.FieldByName( 'BOOL' ).AsInteger = 1  then
    DS.FieldByName( 'BOOL' ).AsInteger := 0
  else
    DS.FieldByName( 'BOOL' ).AsInteger := 1;
end;

...
En este caso al campo agregado lo denominé BOOL y usé el evento OnDblClick.

Salida del ejemplo:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar color a DBGrid Esau OOP 7 28-01-2011 22:26:41
cambiar el color de un DBGrid tebre Varios 1 11-03-2009 23:24:36
Cambiar color de fondo en un DBgrid Alexis De la Cr Conexión con bases de datos 5 02-06-2006 22:25:59
cambiar color al indicador del DBGrid jorge_mosquera OOP 1 07-04-2004 00:27:44
Cambiar Color a un DbGrid UTECYBER OOP 1 03-11-2003 18:29:02


La franja horaria es GMT +2. Ahora son las 02:01:00.


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