Compartir a través de


Establecer propiedades en tiempo de ejecución

El modelo de objetos de Visual FoxPro proporciona mucho control sobre las propiedades en tiempo de ejecución.

Referencias a objetos en la jerarquía de objetos

Para manipular un objeto, hay que identificarlo en relación a la jerarquía de contenedores. En el nivel superior de la jerarquía de contenedores (el conjunto de formularios o el formulario) debe hacer referencia a la variable de objeto. A no ser que use la cláusula NAME del comando DO FORM, la variable de objeto tiene el mismo nombre que el archivo .scx.

Para manipular las propiedades, haga referencia a la variable de objeto, al control y a la propiedad, separados por un punto (.):

objectvariable.[form.]control.property = Setting

La tabla siguiente muestra las propiedades o las palabras clave que facilitan el establecimiento de referencias a un objeto en la jerarquía de objetos.

Propiedad o palabra clave Referencia
ActiveControl El control del formulario activo actualmente que tiene el foco
ActiveForm El formulario activo actualmente
ActivePage La página activa del formulario activo actualmente
Parent El contenedor más cercano al objeto
THIS El objeto o un procedimiento o evento del objeto
THISFORM El formulario que contiene el objeto
THISFORMSET El conjunto de formularios que contiene al objeto

Por ejemplo, para cambiar el título de un botón de comando del formulario frmCust de un conjunto de formularios almacenado en Custview.scx, use el siguiente comando en un programa o en la ventana Comandos:

CustView.frmCust.cmdButton1.Caption = "Edit"

Utilice las palabras clave THIS, THISFORM y THISFORMSET para hacer referencia a objetos desde un formulario. Por ejemplo, para cambiar el título de un botón de comando cuando hace clic en éste, incluya el comando siguiente en el código de evento Click para el botón de comando:

THIS.Caption = "Edit"

La tabla siguiente ofrece ejemplos del uso de THISFORMSET, THISFORM, THIS y Parent para establecer propiedades de objeto.

(Comando) Dónde incluir el comando
THISFORMSET.frm1.cmd1.Caption = 'OK'
En el código de evento o de método de cualquier control de un formulario del conjunto de formularios salvo frm1.
THISFORM.cmd1.Caption = 'OK'
En el código de evento o de método de cualquier control salvo cmd1 en el mismo formulario en que está cmd1.
THIS.Caption = 'OK'
En el código de evento o de método del control cuyo título desee cambiar.
THIS.Parent.BackColor = RGB(192,0,0)
En el código de evento o de método de un control de un formulario. El comando cambia a rojo oscuro el color de fondo del formulario.

Establecer propiedades en tiempo de ejecución mediante expresiones

También puede establecer propiedades en tiempo de ejecución si utiliza expresiones o funciones.

Para establecer propiedades en expresiones en tiempo de ejecución

  • Asigne una expresión a la propiedad.

    –O bien–

  • Asigne a la propiedad el resultado de una función definida por el usuario.

    Por ejemplo, podría establecer el título de un botón como Modificar o Guardar, según el valor de una variable. Declare la variable en el programa que llama a su formulario:

    PUBLIC glEditing
    glEditing = .F.
    

    A continuación, utilice una expresión IIF en el valor de Caption:

    frsSet1.frmForm1.cmdButton1.Caption = ;   
       IIF(glEditing = .F., "Edit", "Save")
    

Podría determinar el tamaño de un botón y establecer el título mediante expresiones con campos de una tabla:

* set button width to length of 'Call ' + first and last names
frmForm1.cmdButton1.Width = 5 + ;
   LEN(ALLTRIM(employee.first_name    + " " + employee.last_name)) 
* set button caption to 'Call ' + first and last names
frmForm1.cmdButton1.Caption = "Call " + ;
   ALLTRIM(employee.first_name + " " + employee.last_name)

También podría establecer el título mediante una función definida por el usuario:

frsSet1.frmForm1.cmdButton1.Caption = setcaption()

Establecer múltiples propiedades

Puede establecer múltiples propiedades de una sola vez.

Para establecer múltiples propiedades

  • Utilice la estructura WITH ... ENDWITH.

    Por ejemplo, para establecer múltiples propiedades de una columna en una cuadrícula de un formulario, podría incluir la instrucción siguiente en el código de cualquier evento o método del formulario:

    WITH THISFORM.grdGrid1.grcColumn1
       .Width = 5
       .Resizable = .F.
       .ForeColor = RGB(0,0,0)
       .BackColor = RGB(255,255,255)
       .SelectOnEntry = .T.
    ENDWITH
    

Llamar a métodos en tiempo de ejecución

La sintaxis para llamar a los métodos de un objeto es la siguiente:

Parent.Object.Method

Una vez creado un objeto, puede llamar a los métodos de ese objeto desde cualquier lugar de la aplicación. Los comandos siguientes llaman a métodos para mostrar un formulario y establecer el foco en un botón de comando:

* form set saved in MYF_SET.SCX
myf_set.frmForm1.Show
myf_set.frmForm1.cmdButton1.SetFocus

Para ocultar el formulario, ejecute este comando:

myf_set.frmForm1.Hide

Responder a eventos

El código incluido en un procedimiento de evento se ejecuta cuando se produce el evento. Por ejemplo, el código que incluya en el procedimiento de evento Click de un botón de comando se ejecutará cuando el usuario haga clic en el botón de comando.

Una llamada al código de procedimiento asociado a un evento no hace que se produzca un evento. Por ejemplo, la instrucción siguiente hace que se ejecute el código del evento Activate de frmPhoneLog, pero no activa el formulario:

frmPhoneLog.Activate

Al llamar al método Show de un formulario, se mostrará y activará el formulario. En este momento se ejecutará el código del evento Activate:

frmPhoneLog.Show

Vea también

Ejecutar un formulario | Ejemplo de manipulación de objetos | Crear formularios | Ocultar un formulario | Transferir parámetros a un formulario | Guardar un formulario como HTML