25 de enero de 2006

Mantener centrada una imagen en un formulario

Podemos poner y mantener centrada una imagen en un formulario, aunque éste cambie de tamaño, haciendo lo siguiente:

  • Agregar un objeto Image al formulario
  • Agregar código que "centre" la imagen en el método Init de la imagen (ver el código de abajo)
  • Agregar código que mantenga "centrada" la imagen en el método Resize del formulario (ver el código de abajo)

En el siguiente ejemplo podemos ver el código y como funciona.

loMiForm = CREATEOBJECT("MiForm")
loMiForm.SHOW(1)
RETURN

DEFINE CLASS MiForm AS FORM

  HEIGHT = 400
  WIDTH = 500
  AUTOCENTER = .T.
  CAPTION = "Redimensionar el formulario..."
  NAME = "MiForm"

  ADD OBJECT text1 AS TEXTBOX WITH ;
    HEIGHT = 25, LEFT = 125, TOP = 125, WIDTH = 300, ;
    NAME = "Text1", VALUE = "Comunidad VFP en Español"

  ADD OBJECT text2 AS TEXTBOX WITH ;
    HEIGHT = 25, LEFT = 125, TOP = 200, WIDTH = 300, ;
    NAME = "Text2", VALUE = "Nada corre como un zorro"

  ADD OBJECT image1 AS IMAGE WITH ;
    PICTURE = HOME(2) + "data\graphics\pattcaro.gif", ;
    HEIGHT = 20, LEFT = 12, TOP = 12, WIDTH = 20, ;
    NAME = "Image1", STRETCH = 0

  PROCEDURE RESIZE
    THIS.Image1.LEFT = INT(THISFORM.WIDTH  - THIS.Image1.WIDTH)/ 2
    THIS.Image1.TOP = INT(THISFORM.HEIGHT - THIS.Image1.HEIGHT)/ 2
  ENDPROC

  PROCEDURE image1.INIT
    THIS.LEFT = INT(THISFORM.WIDTH  - THIS.WIDTH)/ 2
    THIS.TOP = INT(THISFORM.HEIGHT - THIS.HEIGHT)/ 2
    THIS.ZORDER(1)
  ENDPROC

ENDDEFINE

Luis María Guayán

1 comentario :

  1. Los metodos y eventos no pueden contener procedimientos o definiciones de clases
    anidadas

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.