Ver Mensaje Individual
  #4  
Antiguo 17-07-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Reputación: 22
cHackAll Va por buen camino
Cita:
Empezado por ganegri
...Tengo un proceso que actualiza el canvas de un tpanel...
Vaya, no se por qué no se me ocurrió un poco antes el motivo: el objeto TPanel tiene asociado un objeto TCanvas como privado, NO es público, así que no tenemos forma de acceder a él a pesar de que heredemos la clase en un nueva clase de panel con TCanvas... por lo que nos cuentas para poder "pintar" en él, lo que haces es obtener el manejador desde la GDI verdad??? pues bueno la API GetDC y GetWindowDC no son lo apropiado para realizar lo que estas haciendo, y muy probablemente tampoco el TPanel.

Utiliza un TPaintBox en ves del TPanel... con éste puedes usar el evento OnPaint como veas más apropiado si no quieres dejar de usar el borde que te deja un panel, en el evento citado utiliza:

Código Delphi [-]
var Rect: TRect;
begin
...
 Rect := PaintBox1.ClientRect;
 Frame3D(PaintBox1.Canvas, Rect, clBtnHighlight, clBtnShadow, 1);
...

Si tu Bevel está en bvLowered
Código Delphi [-]
Frame3D(PaintBox1.Canvas, Rect, clBtnShadow, clBtnHighlight, 1);

el resto seguramente será copia de lo que ya tienes.

Saludos!
Responder Con Cita