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 20-07-2005
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 20
elcigarra Va por buen camino
Un TShape con personalidad

¿Alguien sabe como dibujar un Rectángulo (o otro shape cualquiera) que quede "por encima de todo", en un Formulario, aún de los controles descendientes de TWinControl? Como los shapes son descendientes de TGraphicControl, siempre quedan con partes cubiertas por otros componentes de mayor "peso". En mi caso quiero que una parte del rectángulo quede por encima de un TDBGrid.
Responder Con Cita
  #2  
Antiguo 20-07-2005
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.321
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
Se me ocurre una forma sencilla, que es un TPanel con un TShape y alineación alClient; Ya sea por separado o creando un componente nuevo derivado del TPanel y creando el TShape en su interior.

No se si exactamente te refieres a eso y te puede servir...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 20-07-2005
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 20
elcigarra Va por buen camino
en realidad no...

...lamentablemente no me sirve porque lo que yo quiero es un cuadro vacío, es decir un rectangulo dibujado con una linea y el interior transparente. Digamos algo tipo Bevel o un TShape con BrushStyle bsClear.
Responder Con Cita
  #4  
Antiguo 20-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Creo que tendrás que hechar mano a las regiones, hechale un vistaso en la ayuda a la función CreatePolygonRgn y CombineRgn

Pues nada que te creas una región como la que necesitas y después al TPanel de Neftali le aplicas un SetWindowRgn y listo.

Espero te de resultado esta idea.

saludos.
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #5  
Antiguo 20-07-2005
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 20
elcigarra Va por buen camino
Pensé en eso, pero no quería hacer sufrir tanto al windows con regiones irregulares, pensé que había formas más sencillas...
Responder Con Cita
  #6  
Antiguo 20-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Cita:
Empezado por elcigarra
pero no quería hacer sufrir tanto al windows con regiones irregulares.
Alguna vez windows se ha apiadado de ti y no ha utilizado sus congelaciones regulares

Cita:
Empezado por elcigarra
pensé que había formas más sencillas
Bueno puede ser, quizás otro integrante de estos foros pueda ayudarte con otra idea.

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #7  
Antiguo 20-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Un ejemplito para si te decides

Pon en tu form un TPanel de 40 por 40, lo puedes pintar de azul para que se distinga bien y en el Oncreate de tu form

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
Var
Reg1,Reg2{,RegDest} : HRGN;
begin
Reg1:=CreateEllipticRgn(0,0,40,40);
Reg2:=CreateEllipticRgn(2,2,38,38);
//RegDest := Reg1;
CombineRgn(Reg1,Reg1,Reg2,RGN_DIFF);
SetWindowRgn(Panel1.Handle,Reg1,True); 
end;

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo


Última edición por yusnerqui fecha: 20-07-2005 a las 21:22:26. Razón: Reducir el código
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 23:49:08.


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