Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2006
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.269
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
DBGrid de color según campo lógico (u otro valor)

Método 1
Cómo modificar los colores en un Grid según el valor de un campo booleano

En el evento GetCellParams pones...

Código Delphi [-]
procedure TnombreFrom.Panel1GetCellParams(Sender: TObject;
  Field: TField; AFont: TFont; var Background: TColor; Highlight: Boolean);

var
  Resultado: Boolean;

begin
  Resultado := (Sender as TDBGrid).DataSource.DataSet.FieldByName('Campo').AsBoolean;
  if not Resultado then Background := clYellow;
  if not resultado then AFont.Color := clRed;
  if Highlight then AFont.Color := clHighlightText;
end;

Método 2
Cómo cambiar el color de una línea del DBGrid, según el contenido de un campo

En este caso se toma el contenido del primer campo, el cual es lógico. Pero puede ser sustituido por cualquier otro valor. Hasta aquí, similar al anterior.

Primero es necesario declarar un tipo nuevo: TCustomDBGrid

Código Delphi [-]
type TCrakerDB = class(TCustomDBGrid);

Y luego, hay que asignar el evento OnDrawColumnCell

Código Delphi [-]
procedure TForm.DBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
try
with TCrakerDB(sender) do begin
     if DataLink.Fields[0].Value then
        if DataLink.ActiveRecord = row - 1 then
           Canvas.Brush.Color := clBlack
        else
            Canvas.Brush.Color := $00FFFFC4;
     end;
DBParrilla.DefaultDrawColumnCell(Rect, DataCol, Column, State);
except
end;
end;

Se produce un efecto no deseable: no hay datos que mostrar y sin embargo, la parrilla contiene datos falsos.

Dicho con otras palabras: Al añadir el bloque except evitamos el error que se produce cuándo no hay datos.
No sirve un bloque finally.

Con este código dibujarás la línea que tiene el cursor de color clBlack, y las que cumplan la condición que especifiques con el color $00FFFFC4. El resto de líneas tendrán el color que el DBGrid tenga definido por defecto.
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 01:36:44.


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