Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2007
ganegri ganegri is offline
Registrado
 
Registrado: ago 2006
Posts: 3
Poder: 0
ganegri Va por buen camino
Canvas (ventana minimizada)

Buenas a todos.
Estoy tratando de trabajar con el canvas de un form minimizado, o no visible. Esto es posible?
Si es asi agradecería alguna referencia u orientación para investigar, pues no encuentro mucho.

Saludos, Gabriel.-
Responder Con Cita
  #2  
Antiguo 14-07-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
De poder trabajar claro que se puede trabajar, pues cuando creas una ventana cualfuese, tambien a esta el Güindos le asigna un Canvas... ahora el problema depende de lo que quieras hacer con dicho canvas, por ejemplo si quieres imprimir (muy común), y haces tu el código de impresion es posible que los componentes de tu formulario como estan Visible = False no se refresquen.

Pero en todo caso puede que haya una alternativa un poco más adecuada por ejemplo usar un TBitmap que normalmente se conoce Buffer doble.

Talvez si nos comentas mas concretamente lo que quieres te colemos un código más "ilustrativo"
Responder Con Cita
  #3  
Antiguo 14-07-2007
ganegri ganegri is offline
Registrado
 
Registrado: ago 2006
Posts: 3
Poder: 0
ganegri Va por buen camino
Canvas - Review

Que tal cHackAll?
Tengo un proceso que actualiza el canvas de un tpanel, dependiendo de algunos parametros. Luego de actualizado lo guardo como imagen.
Cuando la ventana esta activa, no tengo problemas, pero lo que quisieraseria que este proceso tambien se pueda ejecutar con la ventana minimizada o invisible, o detras de otra.
Lo que pasa ahora es que al enviar al fondo la ventana que contiene el tpanel, me "cambia" el canvas que tomaba del rectangulo del tpanel a lo que se ve al cambiar/minimizar la ventana.

Saludos, espero haberme explicado algo mejor.
Cualquier sugerencia es bienvenida.
Gabriel.-
Responder Con Cita
  #4  
Antiguo 17-07-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
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
  #5  
Antiguo 17-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por cHackAll
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
La propiedad Canvas está declarada en TCustomControl como protegida, no como privada, por lo que sí puede accederse a él en una clase derivada.

// Saludos
Responder Con Cita
  #6  
Antiguo 17-07-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
StringReplace('...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...', 'privado', 'protegido', [rfIgnoreCase]);


Gracias amigo roman... allí tienes ganegri un pequeño BUG en la teoría!

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
Aplicacion minimizada en el tray Tecnic2 OOP 14 03-06-2005 10:18:16
Resaltar una ventana minimizada johncook Varios 2 27-11-2004 14:10:00
Aplicación minimizada kalimero Varios 4 27-09-2004 10:22:38
Ventana Minimizada diegofhernando Varios 4 16-05-2003 15:32:25


La franja horaria es GMT +2. Ahora son las 23:18:31.


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