Ver Mensaje Individual
  #3  
Antiguo 07-12-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Reputación: 22
burasu Va por buen camino
Este es el código que utiizo yo, lo añado en el OnDrawColumnCell de la rejilla, y lo puedes usar tanto si esta está enlazada con un componente Tabla como con un componetne SQL. En este caso, yo uso los colores para determinar si el usuario está en el sistema y si el usuario está activado o no.

Código Delphi [-]
  if gdselected in state then begin                   // REGISTRO SELECCIONADO POR EL USUARIO.
    dbgrid1.canvas.brush.color := RGB(0,0,128);
    dbgrid1.canvas.Font.color := RGB(255,255,255);
    dbgrid1.canvas.Font.style:=[fsBold];                  // Lo ponemos en modo negrita
  end
  else begin
   if (TBUsuarios.RecNo mod 2) = 0 then begin         // COMPROBAMOS SI EL REGISTRO ESTÁ SITUADO EN REJILLA PAR O IMPAR
    if Column.Field.Dataset.FieldbyName('LActivo').Value = 1 then begin   // SI EL REGISTRO ESTÁ BLOQUEADO.
      dbgrid1.canvas.brush.color := RGB(255,0,0);
      dbgrid1.canvas.font.color := RGB(255,255,255);
      dbgrid1.canvas.Font.style:=[fsBold];
    end
    else begin
      if (TablaAcceso[TBUsuarios.FieldbyName('NUsuario').AsInteger-1] = 1) and ( TBUsuarios.FieldbyName('NUsuario').Value<> ModuloDatos.RegFichIni.UltUser) then begin
        dbgrid1.canvas.brush.color := RGB(0,128,128);    // Verde Teal'
        dbgrid1.canvas.Font.color:=RGB(255,255,255);    // Blanco
        dbgrid1.canvas.Font.style:=[fsBold];
      end
      else begin
          dbgrid1.canvas.brush.color := RGB(255,255,225);   // Amarillo Claro
          dbgrid1.canvas.Font.color := RGB(0,0,0);
          dbgrid1.canvas.Font.style:=[];
      end;
    end;
   end
   else begin
    if Column.Field.Dataset.FieldbyName('LActivo').Value = 1 then begin
      dbgrid1.canvas.brush.color := RGB(255,0,0);
      dbgrid1.canvas.font.color := RGB(255,255,255);
      dbgrid1.canvas.Font.style:=[fsBold];
    end
    else begin
//      if (TBUsuarios.FieldbyName('NUsuario').Value = AcUser) and (AcUser <> ModuloDatos.RegFichIni.UltUser) then begin
      if (TablaAcceso[TBUsuarios.FieldbyName('NUsuario').AsInteger-1] = 1) and ( TBUsuarios.FieldbyName('NUsuario').Value<> ModuloDatos.RegFichIni.UltUser) then begin
        dbgrid1.canvas.brush.color := RGB(0,128,128);
        dbgrid1.canvas.Font.color:=RGB(250,250,183);
        dbgrid1.canvas.Font.style:=[fsBold];
      end
      else begin
        dbgrid1.canvas.brush.color := RGB(250,250,183);
        dbgrid1.canvas.Font.color := RGB(0,0,0);
        dbgrid1.canvas.Font.style:=[];
      end;
    end;
   end;
  end;

  dbgrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);

Espero que te ayude

P.D: Visto así creo que se puede optimizar bastante, pero eso ya te lo dejo a tí.
Responder Con Cita