Diálogos multi-página
|
Un diálogo puede contener más de una página (también llamadas ficha o pestaña); para crear múltiples páginas utilizamos la propiedad Página (Step).
Esta propiedad aplicada a un diálogo creará nuevas páginas y mediante el establecimiento de su valor se define cual es la actual. La misma propiedad, pero aplicada a los controles, define a qué página son asignados.
Cuando esta propiedad se establece a 0 en un diálogo, los controles son visibles en todas las páginas, independientemente del valor de la propiedad Página (Step) de los controles. Del mismo modo, si se establece a 0 para un control, éste será visible en todas las páginas del diálogo.
Definir las páginas del diálogo
El valor de esta propiedad se puede establecer desde el editor de diálogos y/o desde el código Basic. El siguiente ejemplo muestra cómo asignamos el valor de la propiedad a los controles.
oDlg = DlgCrear( "Standard", "Dialog1" ) oDlg.Model.Title = "Copias de seguridad de clientes" oDlg.Model.Step = 1 oModel = Model(oDlg, "ImgCopiar" ) oModel.Step = 1 oModel = Model(oDlg, "ImgRestaurar" ) oModel.Step = 2
Aunque se pueda realizar por código, lo más cómodo es hacerlo desde el editor de diálogos. Hemos agregado algunos controles más a nuestro diálogo. Los pasos que hemos seguido son:
- 1. Agregar los nuevos controles BtCopiar, BtRestaurar y FrameControl1. El diálogo mantiene su propiedad Página (Step) a 0, y los nuevos controles la heredan.
- 2. Seleccionar el diálogo desde su marco; ajustar su propiedad Página (Step) a 1
- 3. Agregar los nuevos controles ListaDst, BtAgregaTodos, BtAgregaSel, BtQuitaSel, BtQuitaTodos. Por defecto, los nuevos controles agregados heredan la propiedad del diálogo. Ajustar la propiedad Página (Step) a 1 de los controles ImgCopiar, ListaOrg y ChkDobleCopia.
- 4. Seleccionar el diálogo desde su marco; ajustar su propiedad Página (Step) a 2
- 5. Agregar los nuevos controles. Ajustar la propiedad Página (Step) a 2 de los controles ImgRestaurar, FcSeleccionar y Label2. Por defecto, los nuevos controles agregados heredan la propiedad del diálogo.
Hemos realizado también algunos ajustes en la ventana diseño para reducir el código mostrado en los ejemplos (tamaño de letra, fondo de color, valores de las listas, orden de tabulación, etc.)
Veamos el aspecto que presenta ahora:
Si desde el editor de diálogos establecemos la propiedad del diálogo Página (Step) a 0 y hacemos clic en el diálogo, se muestran todos los controles. Estableciendo su propiedad al valor adecuado y haciendo clic en el diálogo se muestran sólo los controles asignados a esa página. |
Los controles que mantienen el valor 0 de su propiedad Página (Step) serán visibles en todas las páginas del diálogo; hablamos de los botones Aceptar y Cancelar, Hacer copia, Restaurar copia y del control Cuadro de grupo.
En cambio, las imágenes y el resto de controles se han establecido en páginas distintas.
La página inicial se puede establecer desde el editor de diálogos o desde el código. Veamos como ha quedado nuestra subrutina Main:
Sub Main() '-------------------------------------------------------------------------- Dim oDlg As Object, nBoton As Integer oDlg = DlgCrear( "Standard", "Dialog1" ) oDlg.Model.Title = "Copias de seguridad de clientes" oDlg.Model.Step = 1 nBoton = oDlg.Execute() If nBoton = 1 Then MsgBox ("Se ha pulsado el botón Aceptar", 192, "Información") DlgCerrar oDlg End Sub
Cambiar de página durante la ejecución
Los botones BtCopiar y BtRestaurar son los encargados de cambiar de página el diálogo. Debemos escribir una subrutina que asignada al evento Botón del ratón soltado nos permita realizar el cambio de página y los ajustes en otros controles que consideremos oportunos. Veamos el código necesario:
Sub BtCopiar_Clic( oEv ) '-------------------------------------------------------------------------- Dim oDlg As Object, oCtrl As Object oDlg = oEv.Source.Context oDlg.Model.Step = 1 oDlg.Model.Title = "Copias de seguridad de clientes" oCtrl = Control( oDlg, "Label1" ) oCtrl.Text = "Selecciona uno de la lista" End Sub
Sub BtRestaurar_Clic( oEv ) '-------------------------------------------------------------------------- Dim oDlg As Object, oCtrl As Object oDlg = oEv.Source.Context oDlg.Model.Step = 2 oDlg.Model.Title = "Restaurar copias de seguridad de clientes" oCtrl = Control( oDlg, "Label1" ) oCtrl.Text = "Selecciona el archivo a restaurar" End Sub
Diálogos en varios idiomas
Las propiedades de tipo texto de los controles pueden ser localizadas en multitud de idiomas a elección.
Para localizar los textos debemos mostrar la barra de herramientas Idioma desde el menú Ver > Barras de herramientas..., y seleccionando cada idioma a utilizar, definir los textos correspondiente en cada uno de los controles.
Más información sobre localización de diálogos en
|
Importante: Si se cambia el nombre a un control, las localizaciones se reinician y se pierden, por lo que es recomendable no localizar hasta que se hayan renombrado todos los controles |