Autor Tema: Mejorar esta funcion (Centrar FORM)  (Leído 5544 veces)

0 Usuarios y 1 Visitante están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Mejorar esta funcion (Centrar FORM)
« en: Junio 09, 2011, 01:16:36 pm »
Este metodo yo uso para centrar mis ventanas dentrol del MDIForm, lo que quiero mejorar es el tema de tamaño por que no todos mis Form son iguales.

Código: [Seleccionar]
Private Sub Form_Load()
       
    Me.Width = 15000
    Me.Height = 9500
   
    CENTRAR_VENTANAS Form1

End Sub


Public Sub CENTRAR_VENTANAS(FRM As Form)
   
    'FRM.Width = 15000
    'FRM.Height = 9500
   
    isq = (MDIForm1.Width - FRM.Width) / 2
    If isq < 0 Then isq = 0
        arr = (MDIForm1.Height - FRM.Height) / 2
    If arr < 0 Then arr = 0
   
    FRM.Left = isq
    FRM.Top = arr - 700
   
End Sub

Lo que le quiero hacer es por ejemplo en el Form_Load poner asi:

CENTRAR_VENTANAS Form1, 15000, 6500

Siendo 15000 el Ancho y 6500 la Altura
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Mejorar esta funcion (Centrar FORM)
« Respuesta #1 en: Junio 09, 2011, 03:27:16 pm »
no entendi que es lo de ancho y alto. ahi en esa funcion vos usas el .height y .width, creo que podes usar .scalewidth y .scaleheight. pero en fin, ese parametro del tamaño, que es? el form? la pantalla???
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Mejorar esta funcion (Centrar FORM)
« Respuesta #2 en: Junio 09, 2011, 06:25:26 pm »
lo que yo hago con esta función es centrar los formularios, los pongo en el form load. Lo que no quiero hacer es no poner mas el:

Me.Width = 15000
Me.Height = 9500

si no solamente CENTRAR_VENTANAS Me, y aca con una coma definir ya el tamaño de altura y ancho del Form
« última modificación: Junio 09, 2011, 06:29:19 pm por enterariel »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

Juan Luis López

  • Bytes
  • *
  • Mensajes: 30
  • Reputación: +2/-0
  • No nos mires ¡UNETE!
    • Ver Perfil
    • #spanishrevolution
Re:Mejorar esta funcion (Centrar FORM)
« Respuesta #3 en: Junio 09, 2011, 06:28:04 pm »
Existe un objeto llamado Screen (que contiene los datos de la pantalla)
si haces:
Código: [Seleccionar]
Public Sub CentrarForm(Form as Form)
     Form.left=Screen.Width/2 - Form.Width/2
     Form.top =screen.height/2 -Form.Height/2
End Sub

Se usaría asi
Código: [Seleccionar]
CentrarForm(Form1)
Lo que hace es calcular la mitad del ancho de la pantalla y colocar en ese punto la mitad del ancho del formulario
Luego calcula la mitad del alto de la pantalla y coloca en ese punto la mitad del alto del form.
Juventud SIN futuro. Sin casa, sin curro, sin pensión, ¡Sin miedo!

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Mejorar esta funcion (Centrar FORM)
« Respuesta #4 en: Junio 09, 2011, 10:40:52 pm »
Sabes por que no uso este metodo, por que solo funciona en MDI maximizados.

  • No hagas "Citas" extensas e innecesarias, solo cita lo mas importante.
« última modificación: Junio 10, 2011, 02:44:33 pm por xkiz ™ »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Mejorar esta funcion (Centrar FORM)
« Respuesta #5 en: Junio 09, 2011, 11:25:20 pm »
sigo sin entender... vamos por puntos:
* el tamaño del form MDI no lo sabes, pero no importa (es accesible desde frmMdi.ScaleWidth y frmMdi.ScaleHeight)
* vos queres centrar un formulario DENTRO del MDI
* el tamaño del form que queres centrar no interfiere en nada, ya que lo accedes desde frmChild.Width y frmChild.Height (aca uso esto, dado que scaleheight y scalewidth te dan el tamaño exacto del interior del form, y los que no dicen scale, te dan el tamaño exterior del form)

entonces, no veo donde esta la complicacion... no se porque seteas el tamaño del form MDI antes de llamar a esta funcion, podes hacerlo desde las propiedades en el IDE...
y despues, la funcion que vos usas esta bien (exceptuando las 2 ultimas lineas)
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Mejorar esta funcion (Centrar FORM)
« Respuesta #6 en: Junio 10, 2011, 12:17:26 pm »
Mira usando este codigo:
Código: [Seleccionar]
frmMdi.ScaleWidth y frmMdi.ScaleHeightSi vos tenes un MDI, y la propiedad en WindowState=Normal el tamaño del Form1 cambia a no ser que le definas el tamaño del alto y ancho.

Yo lo que quiero con esa funcion es pasarle el tamaño y a la ves centrar.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Mejorar esta funcion (Centrar FORM)
« Respuesta #7 en: Junio 10, 2011, 01:49:19 pm »
Bueno aca ya esta solucionado esto. Con la ayuda de amigo Raul338.
Código: (vb) [Seleccionar]
Public Sub CENTRAR_VENTANAS(frm As Form, Width As Long, Heigth As Long)
   
    frm.Width = Width
    frm.Height = Heigth
   
    isq = (MDIForm1.Width - frm.Width) / 2
    If isq < 0 Then isq = 0
        arr = (MDIForm1.Height - frm.Height) / 2
    If arr < 0 Then arr = 0
   
    frm.Left = isq - 150
    frm.Top = arr - 880
   
End Sub

Se usa asi

Private Sub Form_Load()

    CENTRAR_VENTANAS Me, 14900, 9300
   
End Sub

« última modificación: Junio 10, 2011, 02:46:33 pm por xkiz ™ »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo