En gambas hay dos tipos de ventanas: Ventanas corrientes y ventanas embebidas dentro de un container.
Una ventana puede ser o no persistente. Una ventana normal no es persistente porque cuando se cierra se destruye. Una ventana persistente cuando se cierra solo se oculta. La propiedad que decide esto es PERSISTENT
Una ventana puede ser o no modal. Las ventanas modales no pueden ser tapadas por otras ventanas.
La primera vez que se muestra una ventana se dispara el evento OPEN. Si la ventana se cerró y se vuelve a abrir de nuevo volverá a dispararse OPEN.
Para cerrar una ventana se puede pulsar el botón de cerrar o ejecutar el evento CLOSE.
Si se llama al evento CLOSE durante el evento OPEN la ventana no llega a abrirse.
La propiedad RAISE pone a la ventana en primer término si no lo estaba.
En el caso de ventanas modales cuyo tamaño se pueda modificar el tamaño mínimo será aquel con que se inició.
Formularios MDI
Para crear formularios MDI hay que incluir la librería FORM.MDI.
Añadir un workspace (pestaña special)
PUBLIC SUB NuevoformMdi(formulario AS Form)
Workspace1.Add(formulario.Window) ' Hay que pasar la propiedad window de la ventana
END
Workspace1.Add(formulario.Window) ' Hay que pasar la propiedad window de la ventana
END
El objeto Workspace es un contenedor de formularios.
Crear el formulario
Dim F as new form
f.open ---> abrir el formulario y mostrarlo
f.load ---> cargar el formulario y no mostrarlo
f.center ---> centrar el formulario en pantalla
Cerrar el formulario
f.close
Ocultar/mostrar formulario
f.hide ----> ocultar formulario
f.show ----> mostrar formulario NO MODAL
f.showmodal() ----> mostrar formulario MODAL sin retornar valor alguno cuando se cierre
f.showmodal(integer) ---> mostrar formulario MODAL retornando el parámetro cuando se cierre.
El parámetro tiene que ser un número entero.
Crear un botón y programar el evento click
dim b as new button
b.top=100
b.left=300
b.width=200
b.height=50
b.text="&botón"
sub b_click()
...
end sub
b.top=100
b.left=300
b.width=200
b.height=50
b.text="&botón"
sub b_click()
...
end sub
Este tema no está completo porque se que se puede incrustar un formulario dentro de otro, pero no lo he conseguido.