Ver Mensaje Individual
  #4  
Antiguo 27-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 24
andres1569 Va por buen camino
Hola:

Creo que deberías redefinir el método DrawColumnCell que es dynamic (virtual), y no DefaultDrawColumnCell, este método es estático y parece estar pensado para llamarlo desde nuestro código si queremos conseguir el funcionamiento por defecto y así evitarnos trabajo extra.

En realidad, a partir de Delphi 4.0, están obsoletos los métodos DrawDataCell y DefaultDrawDataCell, y se deben emplear DrawColumnCell y DefaultDrawColumnCell (cambia lo de Data por Column), pero ten en cuenta lo que te he dicho anteriormente, el método DefaultDrawColumnCell no se debe sobreescribir (en tu caso lo que has hecho ha sido definir uno nuevo con el mismo nombre, no te habrá dejado ponerle override porque es estático). El método que interesa es DrawColumnCell.

La cosa quedaría así:
Código:
type

TDBGridPlus = class(TDBGrid)
protected
  procedure DrawColumnCell (const Rect: TRect; DataCol: Integer; 
    Column: TColumn; State: TGridDrawState);  override;
  public
    // el procedure MiDefaultDrawColumnCell ahora sobra
end;

...

procedure TDBGridPlus.DrawColumnCell(const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  // aquí pones el código que antes se hacía en MiDefaultDrawColumnCell
  // y te evitas ese método, puesto que reciben los mismos parámetros
  inherited DrawColumnCell;
end;
Como muy bien te explicó Marto, dependiendo de lo quieras lograr, colocarás antes o después la llamada a inherited DrawColumnCell;
__________________
Guía de Estilo

Última edición por andres1569 fecha: 27-07-2003 a las 08:21:14.
Responder Con Cita