Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2003
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Poder: 21
CORBATIN Va por buen camino
Forms con las esquinas redondeadas

Hola a todos, he buscado en los foros y en páginas de componentes alguno para redondear los bordes de un form, pero no he encontrado nada. Si he visto varios códigos que pintan el form de varias formas o lo hacen tranparente pero si eso también sirve para hacer lo que pido no tengo ni idea como se hace.

Agradecería cualquier información sobre el tema, gracias por vuestra ayuda.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita
  #2  
Antiguo 12-09-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Aquí tienes un ejemplo:

Código:
procedure TForm1.FormCreate(Sender: TObject); 
var 
  f: HRGN; 
begin 
  Form1.Borderstyle := bsNone; 
  f := CreateRoundRectRgn( 
          0,            // x-coordinate of the region's upper-left corner 
          0,            // y-coordinate of the region's upper-left corner 
          clientwidth,  // x-coordinate of the region's lower-right corner 
          clientheight, // y-coordinate of the region's lower-right corner 
          40,           // height of ellipse for rounded corners 
          40);          // width of ellipse for rounded corners 
  SetWindowRgn(Handle,f,True); 
end
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 15-09-2003
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Poder: 21
CORBATIN Va por buen camino
Ok gracias, aunque tendré que ver como se ajustan ahora los botones de cerrar, etc porque se los come al hacer el circulo, pero de todas formas gracias por tú ayuda.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita
  #4  
Antiguo 15-09-2003
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Wink

Cita:
Posteado originalmente por CORBATIN
tendré que ver como se ajustan ahora los botones de cerrar, etc
Si quiere puede usar sus propios botones:

Cerrar:
Application.Terminate;
Minimizar:
Application.Minimize;
Maximizar:
(No me acuerdo )


Espero que le sirva
__________________
:)
Responder Con Cita
  #5  
Antiguo 17-09-2003
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Poder: 21
CORBATIN Va por buen camino
¿Qué quieres decir con usar mis propios botones?.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita
  #6  
Antiguo 17-09-2003
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Cita:
Posteado originalmente por CORBATIN
¿Qué quieres decir con usar mis propios botones?.
·······Pues, en vez de usar la X y el _ de la barra de título de windows (cerrar, maximizar/restaurar y minimizar) usar los suyos propios, es decir, un botón, con el caption X (por ejemplo) para cerrar, otro con el caption _ para minimizar..., en caso de que las esquinas redondeadas no te dejen ver los de windows.

·······No se si me he explicado bien, pero ahí esta
__________________
:)
Responder Con Cita
  #7  
Antiguo 18-09-2003
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Poder: 21
CORBATIN Va por buen camino
Ya te he entendido, pero entonces se debe imitar también la caption del form además de la diferencia de color con el resto del form, creo que eso supone bastante más trabajo.

Sí dispones de algún ejemplo tuyo te estaría muy agradecido que me lo enviaras, gracias.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita
  #8  
Antiguo 19-09-2003
iriber iriber is offline
Registrado
 
Registrado: sep 2003
Posts: 7
Poder: 0
iriber Va por buen camino
Gente, quise usar el código para redondear las puntas del formulario pero mi compilador no reconoce los siguientes identificadores

HRGN
CreateRoundRectRgn
SetWindowRgn

en qué librería están?

saludos
Responder Con Cita
  #9  
Antiguo 19-09-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Tienes que utilizar la unit Windows

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 19-09-2003
iriber iriber is offline
Registrado
 
Registrado: sep 2003
Posts: 7
Poder: 0
iriber Va por buen camino
gracias por tu ayuda, ahora me surgió otro inconveniente:

tipos incompatibles -> HWND and QOpenScrollViewH

en esta función

SetWindowRgn(Handle,f,True);


donde f: HRGN;

saludos
Responder Con Cita
  #11  
Antiguo 19-09-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
No se de dónde has sacado el QOpenScrollViewH...
¿Porqué no nos pasas tu código?

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #12  
Antiguo 19-09-2003
iriber iriber is offline
Registrado
 
Registrado: sep 2003
Posts: 7
Poder: 0
iriber Va por buen camino
el codigo la saque de la sección de trucos, donde muestran cómo crear formularios con diferentes formas:


procedure TForm1.FormCreate(Sender: TObject);
var
hRgn: THandle;
begin
// Crear una zona eliptica
hRgn := CreateEllipticRgn(10, 10, Width - 20, Height - 20);
// poner la nueva region
SetWindowRgn(Handle, hRgn, False);
end;


cuando compilo me dice el error que te envié en el mensaje anterior

saludos
Responder Con Cita
  #13  
Antiguo 19-09-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
El tema es que lo estas haciendo en un QForm... Tienes que tener mucho cuidado en usar WinApis aplicaciones CLX!

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #14  
Antiguo 04-07-2013
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 16
radge Va por buen camino
Buenas , he usado este truco para redondear un formulario que tengo pero entonces pierdo el botón de "CERRAR" que me recomendais crearlo manualmente con un button ?

saludos
Responder Con Cita
  #15  
Antiguo 04-07-2013
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
Chris Va por buen camino
Cita:
Empezado por radge Ver Mensaje
Buenas , he usado este truco para redondear un formulario que tengo pero entonces pierdo el botón de "CERRAR" que me recomendais crearlo manualmente con un button ?

saludos
Lo más fácil es que lo crees con un botón. De lo contrario tendrías que controlar lo que en la Windows API se conoce como "Non Client Area". Haciendo lo último obtendrías un trabajo más armónico ya que podrás pintar y decorar el título de las ventanas a cómo más te guste y haga juego con tu aplicación.

Para controlar la Non Client Area, tendrás que controlor los siguientes eventos:
  • WM_NCHITTEST
  • WM_NCLBUTTONDOWN
  • WM_NCLBUTTONUP
  • WM_NCMOUSEMOVE
  • WM_NCPAINT, entre otros.

Talvez el siguiente ejemplo te puede ayudar http://www.bobpowell.net/NonClient2.aspx. Así te puedes dar una idea de lo que necesitas.

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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:56:20.


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