Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Forms con las esquinas redondeadas (https://www.clubdelphi.com/foros/showthread.php?t=3582)

CORBATIN 12-09-2003 01:29:40

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.

marcoszorrilla 12-09-2003 08:02:45

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.

CORBATIN 15-09-2003 00:30:48

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.

DarkByte 15-09-2003 15:06:02

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 :D)


Espero que le sirva ;)

CORBATIN 17-09-2003 14:44:12

¿Qué quieres decir con usar mis propios botones?.

DarkByte 17-09-2003 20:42:12

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

CORBATIN 18-09-2003 01:08:18

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.

iriber 19-09-2003 15:59:17

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 :)

delphi.com.ar 19-09-2003 16:06:17

Tienes que utilizar la unit Windows

Saludos!

iriber 19-09-2003 16:21:24

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 :)

delphi.com.ar 19-09-2003 16:26:40

No se de dónde has sacado el QOpenScrollViewH...
¿Porqué no nos pasas tu código?

Saludos!

iriber 19-09-2003 16:34:39

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 :)

delphi.com.ar 19-09-2003 16:41:41

El tema es que lo estas haciendo en un QForm... Tienes que tener mucho cuidado en usar WinApis aplicaciones CLX!

Saludos!

radge 04-07-2013 09:42:13

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

Chris 04-07-2013 20:15:37

Cita:

Empezado por radge (Mensaje 463210)
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!


La franja horaria es GMT +2. Ahora son las 00:24:29.

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