Compartir a través de


Ejemplo de manipulación de objetos

El ejemplo siguiente establece propiedades y llama a código de evento desde diversos objetos de un conjunto de formularios. El ejemplo incluye dos formularios, frmLeft y frmRight, en un conjunto de formularios.

Conjunto de formularios de ejemplo en el Diseñador de formularios

Las dos casillas de verificación y el botón de comando de frmLeft están asociados a código de evento. El nombre del cuadro de texto de frmLeft es txtInput.

Código de evento para objetos de LeftForm

Objeto Evento Código
chkItalic Click
THISFORM.txtInput.FontItalic = ;
   THIS.Value
chkBold Click
THIS.txtInput.FontBold = THIS.Value
cmdClear Click
THISFORM.txtInput.Value = ""
THISFORM.txtInput.FontBold = .F.
THISFORM.txtInput.FontItalic = .F.
THISFORM.chkItalic.Value = .F.
THISFORM.chkBold.Value = .F.

Establecer una propiedad de otro control en el mismo formulario

Puede establecer las propiedades de un control desde el código de evento de otro con la palabra clave THISFORM o la propiedad Parent. Los dos comandos siguientes se ejecutan cuando un usuario hace clic en las casillas de verificación Cursiva y Negrita, estableciendo las propiedades correspondientes del cuadro de texto:

THISFORM.txtInput.FontItalic = .T.
THIS.Parent.txtInput.FontBold = .T.

En este caso, THISFORM y THIS.Parent pueden emplearse indistintamente.

Conjunto de formularios de ejemplo en tiempo de ejecución

El código del evento Click para cmdClear utiliza THISFORM para restablecer los valores de los demás controles del formulario.

Establecer las propiedades de otro formulario

También puede establecer propiedades de un formulario desde otro formulario distinto. Form2 contiene 5 botones de comando. El primer botón del formulario tiene este código en su evento Click:

THISFORMSET.frmLeft.Caption = ;
 ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)

Observe que debe hacer referencia al conjunto de formularios y al formulario cuando se establecen propiedades desde otro formulario distinto.

El usuario hace clic en el botón de comando “Cambiar el título del formulario izquierdo” en el formulario de la derecha

El código de evento Click del segundo botón de comando de frmRight muestra cómo se establece una propiedad de un formulario desde un objeto del formulario:

THISFORM.Caption = ;
 ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)

Si el usuario elige este botón, el título de frmRight cambiará al valor del cuadro de texto de frmLeft.

Acceso a objetos de formularios distintos

El siguiente código del evento Click del botón de comando Cambiar la configuración de negrita cambia el valor de la casilla de verificación Negrita de frmLeft y llama al código de evento asociado a este control.

THISFORMSET.frmLeft.chkBold.Value = ;
   NOT THISFORMSET.frmLeft.chkBold.Value
THISFORMSET.frmLeft.chkBold.InteractiveChange

La última línea del ejemplo llama al evento InteractiveChange de chkBold. También podría llamar a este procedimiento mediante el comando siguiente:

THISFORMSET.frmForm1.chkBold.InteractiveChange( )

Si se omite esta llamada al procedimiento, cambiará el valor de la casilla de verificación, pero no cambiará la propiedad FontBold del cuadro de texto.

El usuario hace clic en el botón de comando “Cambiar la configuración de negrita” en el formulario de la derecha

Comprobar propiedades y llamar a código de método de otro formulario

El código siguiente del evento Click del botón de comando Ocultar formulario izquierdo oculta o muestra frmLeft, según el valor de la propiedad Visible, y cambia el título del botón según corresponda:

IF ThisFormSet.frmLeft.Visible
   ThisFormSet.frmLeft.Hide
   THIS.Caption = "Show Left Form"
ELSE
   ThisFormSet.frmLeft.Show
   THIS.Caption = "Hide Left Form"
ENDIF

Observe que la palabra clave THIS se utiliza en el código de evento de un control para hacer referencia a propiedades del control.

El usuario hace clic en el botón de comando Ocultar formulario izquierdo en el formulario de la derecha

El comando siguiente del evento Click del botón de comando Salir libera el conjunto de formularios; esto hace que se cierren ambos formularios:

RELEASE ThisFormSet

Vea también

Establecer propiedades en tiempo de ejecución | Ocultar un formulario | Crear formularios | Transferir parámetros a un formulario | Guardar un formulario como HTML