Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2006
fly fly is offline
Miembro
 
Registrado: abr 2005
Posts: 65
Poder: 20
fly Va por buen camino
¿Y si haces un TypeCast? (no se como se dice en cistiano ) ; "engañas" al compilador para que crea que la tabla es de una DBGrid y así usas sus propiedades, claro está que sólo funcionará si son compatibles.

Sería algo así:
Código Delphi [-]
procedure IB_Grid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin 

if TDBGrid(Sender).DataSource.Dataset.FieldbyName('ESTADO').AsString = 'Seguimiento' then
 if (gdFocused in State)
    then TDBGrid(Sender).canvas.brush.color := clBlack
    else TDBGrid(Sender).canvas.brush.color := $00D5FFFF;
end;
yo lo uso para obtener el valor ROW de un DBGrid :
Código Delphi [-]
indice_grid:=TStringGrid(DBGrid1).Row;
No he podido probar el ejemplo que te pongo porque no tengo ibobjects ya me contaras si es lo que buscas.

Saludos y suerte.
Responder Con Cita
  #2  
Antiguo 13-10-2006
Avatar de kovaski
kovaski kovaski is offline
Miembro
 
Registrado: oct 2006
Ubicación: Valencia
Posts: 39
Poder: 0
kovaski Va por buen camino
Hola.

Te agradezco fly tu respuesta.

He probado tu sugerencia pero no son compatibles, de echo el ib_grid de ibobjecs me parece que no desciende del TDBGrid, y claro esta me da error en ejecución.

Lo cierto que estoy un poco frustrado(jeje). Porque necesito pintar las dichosas lineas ya que es una pieza clave en la claridad de mi programa. Y la razón por la que uso ib_grid de ibobjects es porque en aplicaciones cliente/servidor por internet me parece mucho más rapido y polivalente que los Grid normales, puesto que estan diseñados especificamente para estos entornos.

Seguire investigando(que remedio :-)).

Con todo os seguire agradeciendo vuestras sugerencias.

Saludos.
Responder Con Cita
  #3  
Antiguo 13-10-2006
fly fly is offline
Miembro
 
Registrado: abr 2005
Posts: 65
Poder: 20
fly Va por buen camino
Aun no lo tengo del todo pero algo va haciendo...

Código Delphi [-]
procedure TCobros_f.IB_Grid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 IB_Grid1.Canvas.Brush.Color := $991122;
 IB_Grid1.Canvas.Font.Color := $CC55DD;
 valor:='aqui hay que encontrar el valor del campo a mostrar';
 IB_Grid1.DefaultDrawCell(acol,arow,rect,state,VALOR,taCenter);
end;

Esto funciona, y pinta la celda de un color y el texto de otro, pero necesita que al terminar de asignar los colores y demás se llame al procedimiento DefaultDrawCell para que pinte la celda con los valores asignados anteriormente al canvas.

No se como asignar a la variable VALOR el contenido del campo actual, así que por ahora este código solo sirve para pintar el grid de colores con un valor constante.... pero ya es algo

Cuando tenga un rato sigo con el tema.
Responder Con Cita
  #4  
Antiguo 14-10-2006
Avatar de kovaski
kovaski kovaski is offline
Miembro
 
Registrado: oct 2006
Ubicación: Valencia
Posts: 39
Poder: 0
kovaski Va por buen camino
Thumbs up ¡solución!

Al fin he dado con la solución al problema .

Aqui la pongo para quien le pueda servir. Gracias fly por tu tiempo e interes.

En primer lugar hay que poner la propiedad "DefDrawBefore" del ib_Grid en "True"(por defecto).

En el "uses" hay que poner "IB_Components".

Tenemos que atacar el evento "OnGetCellProps" del ib_Grid y escribimos lo siguiente:

Código Delphi [-]
procedure TFichaOfertas.IB_Grid1GetCellProps(Sender: TObject; ACol,
  ARow: Integer; AState: TGridDrawState; var AColor: TColor; AFont: TFont);
var
  Datos: string;
  Columnas: TIB_Column;
begin
//Este código es para pintar solo la celda del campo "ESTADO" que tiene la palabra "Activo"
if Tablas.dsOfertas.Active then
  begin
    with Tablas.dsOfertas.Dataset do
    begin
      BufferRowNum:= ib_Grid1.DataRow[ARow];
      if BufferRowNum > 0 then
       begin
        Columnas:= ib_Grid1.GridFields[ib_Grid1.DataCol[ACol]];
         if Assigned(Columnas) and (Columnas.FieldName = 'ESTADO') then
           begin
             Datos:= BufferFieldByName('ESTADO').AsString;
             if Datos = 'Activo' then
              if Acolor = ib_Grid1.Color then
                AColor:= clLime;
           end;
       end;
    end;
  end;
//Este código es para pintar la fila completa que tiene el campo "ESTADO" la palabra "Activo"
if Tablas.dsOfertas.Active then
  begin
    with Tablas.dsOfertas.Dataset do
    begin
      BufferRowNum:= ib_Grid1.DataRow[ARow];
      if BufferRowNum > 0 then
       begin
       Datos:= BufferFieldByName('ESTADO').AsString;
       if Datos = 'Activo' then
         if Acolor = ib_Grid1.Color then
          AColor:= clRed;
       end;
    end;
  end;

end;

Gracias por vuestra ayuda. Saludos .
Responder Con Cita
  #5  
Antiguo 14-10-2006
fly fly is offline
Miembro
 
Registrado: abr 2005
Posts: 65
Poder: 20
fly Va por buen camino
Me alegro que se pudiera resolver, por mi parte seguiré "fedellando" con los ibobjets pues si que he notado demasiadas pegas en las aplicaciones cuando las corro a traves de internet.

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar color de una Fila en un String Grid neleg Conexión con bases de datos 4 25-11-2005 10:14:03
cambiar color de fila y columna de un StringGrid1 gulder Varios 2 16-11-2005 17:05:42
Cambiar de color una fila de un Dbgrid segun una condicion... hook Varios 5 12-07-2005 23:40:36
cambiar color en fila seleccionada en un dbgrid gmontes OOP 2 05-05-2005 22:33:24
cambiar color a la fila seleccionada de un grid!! triniti OOP 2 03-08-2004 13:00:42


La franja horaria es GMT +2. Ahora son las 10:58:13.


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