En el código fuente hay una función llamada Redondear_Formulario.

En el primer parámetro de la función hay que pasarle como parámetro, el formulario que
queremos aplicar el esquinado, y en el otro parámetro el valor del radio, mientras mas
grande sea el valor que le pasemos, el formulario mas redondo será.



Por ejemplo para usarlo con el form actual con un valor de 150

Call Redondear_Formulario(Me, 150)



Nota: Se debe quitar los bordes al formulario mediante la propiedad BorderStyle con el
valor 0


Otro detalle a tener en cuenta es que, si le sacamos la barra de titulo, ya no podemos mover
el formulario. Esto lo podemos solucionar con la función Api RelaseCapture y
SendMessage para poder hacer un Drag o arrastre sobre el mismo. Este ejemplo para
arrastrar controles y formularios mediante el Api lo podés ver en la página siguiente a esta.
Código fuente en el formulario

Texto planoImprimir

   1.   Option Explicit
   2.
   3.
   4.   'Declaraciones de funciones Api
   5.
   6.  ' Crea la región
   7.  Private Declare Function CreateRoundRectRgn Lib "gdi32" ( _
   8.     ByVal X1 As Long, _
   9.     ByVal Y1 As Long, _
   10. ByVal X2 As Long, _
   11. ByVal Y2 As Long, _
   12. ByVal X3 As Long, _
   13. ByVal Y3 As Long) As Long
   14.
   15. 'Establece la región
   16. Private Declare Function SetWindowRgn Lib "user32" ( _
   17. ByVal hwnd As Long, _
18. ByVal hRgn As Long, _
19. ByVal bRedraw As Boolean) As Long
20.
21.
22. Private Sub Redondear_Formulario(El_Form As Form, Radio As Long)
23.
24. Dim Region As Long
25. Dim Ret As Long
26. Dim Ancho As Long
27. Dim Alto As Long
28. Dim old_Scale As Integer
29.
30. ' guardar la escala
31. old_Scale = El_Form.ScaleMode
32.
33. ' cambiar la escala a pixeles
34. El_Form.ScaleMode = vbPixels
35.
36. 'Obtenemos el ancho y alto de la region del Form
37. Ancho = El_Form.ScaleWidth
38. Alto = El_Form.ScaleHeight
39.
40. 'Pasar el ancho alto del formualrio y el valor de redondeo .. es decir el radio
41. Region = CreateRoundRectRgn(0, 0, Ancho, Alto, Radio, Radio)
42.
43. ' Aplica la región al formulario
44. Ret = SetWindowRgn(El_Form.hwnd, Region, True)
45.
46. ' restaurar la escala
47. El_Form.ScaleMode = old_Scale
48.
49. End Sub
50.
51. Private Sub Form_Load()
52.
53.
54.
55.
56. MsgBox "Quitarle el borde al formulario: Border Style en 0", vbInformation
57.
58. ' Le pasamos el formulario y el radio de redondeo
59. Call Redondear_Formulario(Me, 100)
60.
61. End Sub

Redondea

  • 1.
    En el códigofuente hay una función llamada Redondear_Formulario. En el primer parámetro de la función hay que pasarle como parámetro, el formulario que queremos aplicar el esquinado, y en el otro parámetro el valor del radio, mientras mas grande sea el valor que le pasemos, el formulario mas redondo será. Por ejemplo para usarlo con el form actual con un valor de 150 Call Redondear_Formulario(Me, 150) Nota: Se debe quitar los bordes al formulario mediante la propiedad BorderStyle con el valor 0 Otro detalle a tener en cuenta es que, si le sacamos la barra de titulo, ya no podemos mover el formulario. Esto lo podemos solucionar con la función Api RelaseCapture y SendMessage para poder hacer un Drag o arrastre sobre el mismo. Este ejemplo para arrastrar controles y formularios mediante el Api lo podés ver en la página siguiente a esta.
  • 2.
    Código fuente enel formulario Texto planoImprimir 1. Option Explicit 2. 3. 4. 'Declaraciones de funciones Api 5. 6. ' Crea la región 7. Private Declare Function CreateRoundRectRgn Lib "gdi32" ( _ 8. ByVal X1 As Long, _ 9. ByVal Y1 As Long, _ 10. ByVal X2 As Long, _ 11. ByVal Y2 As Long, _ 12. ByVal X3 As Long, _ 13. ByVal Y3 As Long) As Long 14. 15. 'Establece la región 16. Private Declare Function SetWindowRgn Lib "user32" ( _ 17. ByVal hwnd As Long, _
  • 3.
    18. ByVal hRgnAs Long, _ 19. ByVal bRedraw As Boolean) As Long 20. 21. 22. Private Sub Redondear_Formulario(El_Form As Form, Radio As Long) 23. 24. Dim Region As Long 25. Dim Ret As Long 26. Dim Ancho As Long 27. Dim Alto As Long 28. Dim old_Scale As Integer 29. 30. ' guardar la escala 31. old_Scale = El_Form.ScaleMode 32. 33. ' cambiar la escala a pixeles 34. El_Form.ScaleMode = vbPixels 35. 36. 'Obtenemos el ancho y alto de la region del Form 37. Ancho = El_Form.ScaleWidth 38. Alto = El_Form.ScaleHeight 39. 40. 'Pasar el ancho alto del formualrio y el valor de redondeo .. es decir el radio 41. Region = CreateRoundRectRgn(0, 0, Ancho, Alto, Radio, Radio) 42. 43. ' Aplica la región al formulario 44. Ret = SetWindowRgn(El_Form.hwnd, Region, True) 45. 46. ' restaurar la escala 47. El_Form.ScaleMode = old_Scale 48. 49. End Sub 50. 51. Private Sub Form_Load() 52. 53. 54. 55. 56. MsgBox "Quitarle el borde al formulario: Border Style en 0", vbInformation 57. 58. ' Le pasamos el formulario y el radio de redondeo 59. Call Redondear_Formulario(Me, 100) 60. 61. End Sub