PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE

Este contenido proviene de una traducción automática.. Haga clic aquí para ver la versión original en inglés.
  • Resumen de una clase
  • Ejemplo de clase
  • Creación y declaración de una clase
  • Crear una clase
  • Sintaxis para declarar la clase y sus elementos
  • Sintaxis detallada de la declaración de clase
  • Ejemplo
  • Declarar a los miembros de una clase
  • Sintaxis
  • Sintaxis detallada
  • Declaración de los miembros de array
  • Serialización de los miembros de una clase
  • Búsqueda en la base de datos
  • Generación de los métodos para acceder a un miembro de la clase (guardado para compatibilidad con versiones anteriores)
  • Declaración de las constantes de clase
  • Sintaxis
  • Sintaxis detallada
  • Ejemplo
  • Declarando un singleton
  • Creación y declaración de los métodos de clase
  • Creación de un método de clase
  • Sintaxis para declarar un método
  • Sintaxis detallada
  • Alcance identificado por el color de la barra
  • Borrar un método
  • Creación y declaración de propiedades
  • Presentación
  • Creación de una propiedad de clase
  • Búsqueda en la base de datos
  • Derechos de acceso a una propiedad
  • Miembros y propiedades
  • Herencia
  • Pasar las propiedades de un parámetro a una función o procedimiento de WLanguage
  • Instancias de clase con contexto HFSQL independiente
  • Presentación
  • Sintaxis
  • Uso
  • comentario
  • Leyenda de los iconos utilizados
  • Nuevas características desde la versión 9
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Resumen de una clase
Una clase está hecha de:
  • datos, llamados miembros.
  • constantes.
  • procedimientos, llamados métodos.. Un método es un procedimiento específicamente escrito en manipular los objetos encontrados en la clase.
  • propiedades. Una propiedad es un elemento de clase que puede ser utilizado directamente por su nombre como miembro y para el cual las operaciones de asignación de valor y recuperación desencadenan la ejecución de un proceso..
    AndroidUniversal Windows 10 AppJava Las propiedades de clase no están disponibles. Universal Windows 10 App Las propiedades de clase no están disponibles.
    Versiones 22 y posteriores
    AndroidJava Las propiedades de clase están ahora disponibles.
    Nueva funcionalidad versión 22
    AndroidJava Las propiedades de clase están ahora disponibles.
    AndroidJava Las propiedades de clase están ahora disponibles.
Para utilizar una clase, debe declarar uno o varios objetos. Todos los objetos de una clase dada tienen los mismos atributos y comportamiento, pero sus miembros contienen datos diferentes.
Por defecto, los miembros de una clase son públicos, se puede acceder a ellos tanto por un método de la clase como por un proceso del proyecto o por uno de sus elementos (ventana, control,...).
Versiones 17 y posteriores
AndroidUniversal Windows 10 App Esta función ya está disponible para las aplicaciones Android y Windows Phone.
iPhone/iPad Esta función ya está disponible para las aplicaciones iPhone/iPad.
Nueva funcionalidad versión 17
AndroidUniversal Windows 10 App Esta función ya está disponible para las aplicaciones Android y Windows Phone.
iPhone/iPad Esta función ya está disponible para las aplicaciones iPhone/iPad.
AndroidUniversal Windows 10 App Esta función ya está disponible para las aplicaciones Android y Windows Phone.
iPhone/iPad Esta función ya está disponible para las aplicaciones iPhone/iPad.
Versiones 21 y posteriores
Universal Windows 10 App Esta función está disponible en el modo Universal Windows 10 App.
Apple Watch Esta función está disponible en el modo Apple Watch.
Nueva funcionalidad versión 21
Universal Windows 10 App Esta función está disponible en el modo Universal Windows 10 App.
Apple Watch Esta función está disponible en el modo Apple Watch.
Universal Windows 10 App Esta función está disponible en el modo Universal Windows 10 App.
Apple Watch Esta función está disponible en el modo Apple Watch.
Ejemplo de clase
La clase "CFile" incluye a los miembros: m_sShortPath, m_sLongPath, m_sExtension, m_sShortName, m_sLongName.
La clase "CFile" incluye los siguientes métodos:
  • FileDate()
  • FileSelection()
  • FileTime()
  • FileSize()
Esta clase no tiene propiedades.
La siguiente información se muestra en el panel "Explorador de proyectos":
Explorador de proyectos, carpeta
Para conocer la leyenda de los iconos utilizados, consulte las Notas.
Creación y declaración de una clase

Crear una clase

Para crear una clase:
  1. Si es necesario, muestre el explorador de proyectos ("Mostrar... Barra de herramientas... Explorador de proyectos").Si es necesario, muestre el explorador de proyectos (en el panel "Inicio", en el grupo "Entorno", expanda "Paneles" y seleccione "Explorador de proyectos").
  2. En el explorador de proyectos, muestre el menú que aparece en la carpeta "Clases" y seleccione "Nueva clase".
  3. En la ventana que se visualiza, introduzca el nombre de la clase y valide.
  4. El editor de código muestra el código de la nueva clase. El proceso de declaración de la clase, el constructor y el destructor se crean automáticamente.

Sintaxis para declarar la clase y sus elementos

<ClassName> is class [, abstract]
<Scope and Rights>
<Declaration Member 1>
<Declaration Member 2>
<Scope and Rights>
<Declaration Member 3>
<Declaration Member 4>
...
<CONSTANT>
<Declaration of Constants>
END

Sintaxis detallada de la declaración de clase

<ClassName>
Nombre que identifica a la clase.
Versiones 19 y posteriores
abstracto: opcional
Se usa para especificar que la clase es abstracta. Una clase abstracta es una clase base que agrupa comportamientos comunes a varias clases.
Una clase es abstracta cuando se declara como tal o si uno de sus métodos es abstracto.
Una clase abstracta no puede ser instanciada.
Nueva funcionalidad versión 19
abstracto: opcional
Se usa para especificar que la clase es abstracta. Una clase abstracta es una clase base que agrupa comportamientos comunes a varias clases.
Una clase es abstracta cuando se declara como tal o si uno de sus métodos es abstracto.
Una clase abstracta no puede ser instanciada.
abstracto: opcional
Se usa para especificar que la clase es abstracta. Una clase abstracta es una clase base que agrupa comportamientos comunes a varias clases.
Una clase es abstracta cuando se declara como tal o si uno de sus métodos es abstracto.
Una clase abstracta no puede ser instanciada.
<Alcance y derechos>
Este parámetro tiene el siguiente formato: [ GLOBAL][ Público / Público CONSTANTE / Protegido / Protegido CONSTANTE / Privado ]
GLOBAL: Opcional
Define un miembro global. Este miembro existirá fuera de los objetos. Se puede utilizar sin instanciar un objeto. Si se declaran varios objetos, un miembro global es común a todos los objetos.
<Modo de acceso>: Opcional
Permite restringir el acceso a este miembro de la clase.
  • Público (por defecto): acceso permitido desde cualquier código de la clase o proyecto.
  • Público CONSTANTE: El valor del miembro puede ser leído y modificado desde un código de la clase o desde un código de una clase derivada; sólo puede ser leído desde otro código de la aplicación..
  • Protegido : acceso permitido desde un código de la clase o desde un código de una clase derivada (y una clase "heredada")
  • Protegido CONSTANTE: El valor del miembro puede ser leído y modificado a partir de un código de la clase; sólo puede ser leído a partir de un código de una clase derivada; no puede ser accedido a partir de ningún otro código de la aplicación..
  • Privado : acceso permitido desde un código de la clase
<Declaration Member>
Sintaxis para declarar a los miembros de la clase (véase más abajo). El alcance y los derechos de acceso de los miembros son los actuales.
<Declaración de constantes>
Sintaxis para declarar las constantes (ver abajo).

Ejemplo

SystemClass is Class
Name is string
END
Declarar a los miembros de una clase

Sintaxis

<Member Name> is <Member Type> [ = <Initial Value>]

Sintaxis detallada

<Nombre del miembro>
Nombre que identifica al miembro.
<Tipo del miembro>
Tipo de miembro elegido entre los tipos disponibles de WLanguage.
<Valor inicial>
Valor inicial del miembro.
SystemClass is Class
Name is string
PRIVATE
ClassSize is int
END

Declaración de los miembros de array

Para declarar una array en una clase, utilice la siguiente sintaxis:
SystemClass is class
DefaultArray is array of 1 int
END
La array se declara como la arrays simple (ver Tipo «array» para más detalles).
Cuando se copian instancias de clases, todos los miembros de la clase se copian en la nueva instancia excepto arrays. Por lo tanto, si se modifica el valor de un miembro de array, este valor se modifica en todas las instancias.
Para obtener arrays independientes en todas las instancias de las clases, debe declararse un array local de la siguiente manera:
SystemClass is class
DefaultArray is local array of 1 int
END

Versiones 18 y posteriores
señalar: Obtener arrays independiente en todas las instancias de las clases:
  1. Abra la ventana de descripción del proyecto: en la pestaña "Proyecto", en el grupo "Proyecto", haga clic en "Descripción".
  2. En la pestaña "Compilación" seleccione "Arrays: la cesión copia el contenido".
Vea Descripción del proyecto, pestaña de compilación para más detalles.
Nueva funcionalidad versión 18
señalar: Obtener arrays independiente en todas las instancias de las clases:
  1. Abra la ventana de descripción del proyecto: en la pestaña "Proyecto", en el grupo "Proyecto", haga clic en "Descripción".
  2. En la pestaña "Compilación" seleccione "Arrays: la cesión copia el contenido".
Vea Descripción del proyecto, pestaña de compilación para más detalles.
señalar: Obtener arrays independiente en todas las instancias de las clases:
  1. Abra la ventana de descripción del proyecto: en la pestaña "Proyecto", en el grupo "Proyecto", haga clic en "Descripción".
  2. En la pestaña "Compilación" seleccione "Arrays: la cesión copia el contenido".
Vea Descripción del proyecto, pestaña de compilación para más detalles.
Versiones 19 y posteriores

Serialización de los miembros de una clase

Por defecto, todos los miembros de una clase están serializados.
Tiene la capacidad de gestionar con precisión la serialización de cada miembro de la clase.:
  • especificando el miembro que será serializado durante la llamada a Serialize.
    Esta operación se puede realizar en todos los tipos de serialización (WXML, JSON, binario)..
  • cambiando el nombre del miembro durante la serialización por Serialize.
    Esta operación sólo se puede realizar durante una serialización binaria..
Esta gestión de serialización se realiza utilizando la siguiente sintaxis:
  • Serialización (o no) de un miembro:
    <Member Name> is <Member Type> [ = <Initial Value>]
    [, Serialize = <True/False>]
  • Serialización y cambio de nombre de miembro:
    <Member Name> is <Member Type> [ = <Initial Value>]
    [, Serialize = <New Name>]
Ejemplo:
Cl is Class
// Serialized member
SerializedMember is int
// Non-serialized member
NonSerializedMember is string, Serialize = False  
// Member renamed during the serialization
RenamedMember is int, Serialize = "NewMemberName"
END
Nueva funcionalidad versión 19

Serialización de los miembros de una clase

Por defecto, todos los miembros de una clase están serializados.
Tiene la capacidad de gestionar con precisión la serialización de cada miembro de la clase.:
  • especificando el miembro que será serializado durante la llamada a Serialize.
    Esta operación se puede realizar en todos los tipos de serialización (WXML, JSON, binario)..
  • cambiando el nombre del miembro durante la serialización por Serialize.
    Esta operación sólo se puede realizar durante una serialización binaria..
Esta gestión de serialización se realiza utilizando la siguiente sintaxis:
  • Serialización (o no) de un miembro:
    <Member Name> is <Member Type> [ = <Initial Value>]
    [, Serialize = <True/False>]
  • Serialización y cambio de nombre de miembro:
    <Member Name> is <Member Type> [ = <Initial Value>]
    [, Serialize = <New Name>]
Ejemplo:
Cl is Class
// Serialized member
SerializedMember is int
// Non-serialized member
NonSerializedMember is string, Serialize = False  
// Member renamed during the serialization
RenamedMember is int, Serialize = "NewMemberName"
END

Serialización de los miembros de una clase

Por defecto, todos los miembros de una clase están serializados.
Tiene la capacidad de gestionar con precisión la serialización de cada miembro de la clase.:
  • especificando el miembro que será serializado durante la llamada a Serialize.
    Esta operación se puede realizar en todos los tipos de serialización (WXML, JSON, binario)..
  • cambiando el nombre del miembro durante la serialización por Serialize.
    Esta operación sólo se puede realizar durante una serialización binaria..
Esta gestión de serialización se realiza utilizando la siguiente sintaxis:
  • Serialización (o no) de un miembro:
    <Member Name> is <Member Type> [ = <Initial Value>]
    [, Serialize = <True/False>]
  • Serialización y cambio de nombre de miembro:
    <Member Name> is <Member Type> [ = <Initial Value>]
    [, Serialize = <New Name>]
Ejemplo:
Cl is Class
// Serialized member
SerializedMember is int
// Non-serialized member
NonSerializedMember is string, Serialize = False  
// Member renamed during the serialization
RenamedMember is int, Serialize = "NewMemberName"
END

Búsqueda en la base de datos

La base de datos está disponible para los miembros de la clase.

Generación de los métodos para acceder a un miembro de la clase (guardado para compatibilidad con versiones anteriores)

El editor de código se utiliza para generar los métodos para acceder a un miembro de la clase. Todo lo que tienes que hacer es:
  1. Declare a su miembro en la clase si aún no lo ha hecho.
  2. En el panel "Código", muestre la descripción de la clase.
  3. Seleccione el miembro y seleccione "Generar los métodos de acceso" en el menú que aparece..
    Generación de los métodos de acceso
  4. Se generan automáticamente dos nuevos métodos en la clase:
    • Writes_<Nombre del miembro>
    • Reads_<Nombre del miembro
Estos métodos se pueden utilizar para acceder al miembro.
Declaración de las constantes de clase

Sintaxis

CONSTANT <Constant Name> = <Constant Value>

CONSTANT
<Constant Name> = <Constant Value>
<Constant Name> = <Constant Value>
END

Sintaxis detallada

<Nombre constante>
Nombre definido para la constante. Una constante es pública.
<Valor de la constante>
Valor asociado a la constante. Este valor no cambiará durante la ejecución del programa.

Ejemplo

CONSTANT K=5
CONSTANT
K=5
J=10
END
Versiones 22 y posteriores
Declarando un singleton
A Singleton es una declaración de instancia de clase única.
Para declarar una instancia de clase única y asignarla inmediatamente, utilice la siguiente sintaxis:
<Name singleton class> is Class
GLOBAL
<Instance name> is <Name singleton class>
END
Ejemplo
CSingleton is Class
GLOBAL
m_Singleton is CSingleton
END
Nueva funcionalidad versión 22
Declarando un singleton
A Singleton es una declaración de instancia de clase única.
Para declarar una instancia de clase única y asignarla inmediatamente, utilice la siguiente sintaxis:
<Name singleton class> is Class
GLOBAL
<Instance name> is <Name singleton class>
END
Ejemplo
CSingleton is Class
GLOBAL
m_Singleton is CSingleton
END
Declarando un singleton
A Singleton es una declaración de instancia de clase única.
Para declarar una instancia de clase única y asignarla inmediatamente, utilice la siguiente sintaxis:
<Name singleton class> is Class
GLOBAL
<Instance name> is <Name singleton class>
END
Ejemplo
CSingleton is Class
GLOBAL
m_Singleton is CSingleton
END
Creación y declaración de los métodos de clase

Creación de un método de clase

Para crear un método de clase:
  1. Si es necesario, muestre el explorador de proyectos ("Mostrar... Barra de herramientas... Explorador de proyectos").Visualizar el explorador de proyectos si es necesario: en el panel "Inicio", en el grupo "Medio ambiente", expanda "Paneles" y seleccione "Explorador de proyectos".
  2. En el explorador de proyectos, muestre las clases disponibles: Para ello, expanda la carpeta "Clases".
  3. Seleccione la clase deseada. Mostrar el menú emergente de la clase (clic derecho del ratón) y seleccionar "Nuevo método".
  4. En la ventana que se abre:
  5. El editor de código muestra el código del nuevo método.

Sintaxis para declarar un método

PROCEDURE [<Access>] [Global] [VIRTUAL] [ABSTRACT]
<Method Name> ([<Parameter1>, ...[<ParameterN>]]) [<Extension Attributes>]

Sintaxis detallada

<Acceso>: Opcional
Se utiliza para restringir el acceso a este método. Hay 3 niveles disponibles:
  • Privado : el método sólo puede ser llamado desde un código de la clase
  • Protegido : el método sólo puede llamarse desde un código de la clase o desde un código de una clase derivada
  • Público (por defecto): el método puede ser llamado desde cualquier código de la clase o proyecto.
Global Global: Opcional
Define un método global. Este método no funcionará en un objeto específico: no se requiere ningún objeto de clase para llamar a este método. Esta clase también puede ser utilizada para manipular los miembros globales.
Virtual: Opcional
Define un método virtual. Un método anulado es virtual por defecto.
Versiones 19 y posteriores
abstracto: Opcional
Define un método abstracto. Un método abstracto es un método que debe ser absolutamente redefinido en las clases derivadas. Un método no es abstracto por defecto.
Nueva funcionalidad versión 19
abstracto: Opcional
Define un método abstracto. Un método abstracto es un método que debe ser absolutamente redefinido en las clases derivadas. Un método no es abstracto por defecto.
abstracto: Opcional
Define un método abstracto. Un método abstracto es un método que debe ser absolutamente redefinido en las clases derivadas. Un método no es abstracto por defecto.
<Nombre del método>
Nombre que identifica el método.
<Parámetro 1> ... <Parámetro N>
Parámetros opcionales para pasar al método.
Versiones 23 y posteriores
<Atributo de extensión>
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Los atributos de extensión disponibles son:
  • <zombie [ omentario = "texto"]>: Se utiliza para definir un método obsoleto (también llamado método zombie).. La palabra clave opcional comment se utiliza para especificar el texto que se mostrará en el error de compilación asociado con el método obsoleto.. Vea Procedimientos zombies para más detalles.
  • <sin paso a paso>: Se usa para especificar que este método será ignorado por el depurador al depurar en modo "Paso a paso"..
Nueva funcionalidad versión 23
<Atributo de extensión>
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Los atributos de extensión disponibles son:
  • <zombie [ omentario = "texto"]>: Se utiliza para definir un método obsoleto (también llamado método zombie).. La palabra clave opcional comment se utiliza para especificar el texto que se mostrará en el error de compilación asociado con el método obsoleto.. Vea Procedimientos zombies para más detalles.
  • <sin paso a paso>: Se usa para especificar que este método será ignorado por el depurador al depurar en modo "Paso a paso"..
<Atributo de extensión>
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Los atributos de extensión disponibles son:
  • <zombie [ omentario = "texto"]>: Se utiliza para definir un método obsoleto (también llamado método zombie).. La palabra clave opcional comment se utiliza para especificar el texto que se mostrará en el error de compilación asociado con el método obsoleto.. Vea Procedimientos zombies para más detalles.
  • <sin paso a paso>: Se usa para especificar que este método será ignorado por el depurador al depurar en modo "Paso a paso"..
GLOBAL procedure ViewObject(obj)
// The private member ClassSize is accessible from the class code
Info("Name: " + Obj:Name + "Size: " + Obj:ClassSize)
GLOBAL FUNCTION Attempt(a1,b1)
RESULT a1 + b1
Versiones 16 y posteriores

Alcance identificado por el color de la barra

Un método de una clase puede ser público, privado o protegido.
El color de inicio de la barra de eventos cambia según el alcance del método:
  • rojo comienzo de la barra: método privado.
  • inicio de la barra de naranja: método protegido.
  • inicio estándar de la barra: método público.
Color de las barras de método
Nueva funcionalidad versión 16

Alcance identificado por el color de la barra

Un método de una clase puede ser público, privado o protegido.
El color de inicio de la barra de eventos cambia según el alcance del método:
  • rojo comienzo de la barra: método privado.
  • inicio de la barra de naranja: método protegido.
  • inicio estándar de la barra: método público.
Color de las barras de método

Alcance identificado por el color de la barra

Un método de una clase puede ser público, privado o protegido.
El color de inicio de la barra de eventos cambia según el alcance del método:
  • rojo comienzo de la barra: método privado.
  • inicio de la barra de naranja: método protegido.
  • inicio estándar de la barra: método público.
Color de las barras de método

Borrar un método

Un método puede borrarse:
  • desde el panel "Explorador de proyectos" ("Eliminar" desde el menú que aparece)
  • Versiones 16 y posteriores
    desde el editor de códigos, a través del menú desplegable de la barra de métodos ("Borrar").
    Nueva funcionalidad versión 16
    desde el editor de códigos, a través del menú desplegable de la barra de métodos ("Borrar").
    desde el editor de códigos, a través del menú desplegable de la barra de métodos ("Borrar").
Creación y declaración de propiedades

Presentación

Una propiedad es un elemento del código que incluye dos procesos:
  • un proceso para recuperar el valor,
  • un proceso para asignar el valor.
Una propiedad puede ser utilizada como una variable o como un miembro (recuperación directa del valor, asignación mediante el símbolo'=', ....). En tiempo de ejecución:
  • Cualquier operación que requiera leer la propiedad ejecuta el proceso para recuperar el valor. Este proceso debe devolver un valor.
  • Cualquier operación que requiera leer la propiedad ejecuta el proceso de asignación del valor que debe procesar un parámetro.
AndroidUniversal Windows 10 AppJava Las propiedades de clase no están disponibles.
Universal Windows 10 App Las propiedades de clase no están disponibles.
Versiones 22 y posteriores
AndroidJava Las propiedades de clase están ahora disponibles.
Nueva funcionalidad versión 22
AndroidJava Las propiedades de clase están ahora disponibles.
AndroidJava Las propiedades de clase están ahora disponibles.

Creación de una propiedad de clase

Para crear una propiedad de clase:
  1. Si es necesario, muestre el explorador de proyectos ("Mostrar... Barra de herramientas... Explorador de proyectos").Si es necesario, muestre el explorador de proyectos (en el panel "Inicio", en el grupo "Entorno", expanda "Paneles" y seleccione "Explorador de proyectos").
  2. En el explorador de proyectos, muestre las clases disponibles (expanda la carpeta "Classes").
  3. Seleccione la clase deseada. Mostrar el menú emergente de la clase y seleccionar "Nueva propiedad".
  4. En la ventana que se abre, introduzca el nombre de la propiedad y valide.
  5. El editor de código muestra los procesos relacionado a la propiedad:
    • Proceso para recuperar la propiedad. Este proceso contiene:
      • la palabra clave "RESULTADO" que se utiliza para obtener el valor de la propiedad.
      • la palabra clave "RETURN =" para devolver el valor de la propiedad.
    • Proceso de asignación del inmueble. Este proceso se utiliza para dar un valor a la propiedad. Este valor se pasa en el parámetro. Este proceso no debe producir ningún resultado.
Nota: También se puede crear una nueva propiedad desde el menú emergente de un miembro. En este caso, los procedimientos automáticamente manipular el miembro especificado.

Búsqueda en la base de datos

La base de datos está disponible para las propiedades de las clases y los miembros de la llamada.

Derechos de acceso a una propiedad

La propiedad no se puede leer si el proceso de recuperación está vacío. Se mostrará un error de compilación en el editor y se producirá un error en tiempo de ejecución.
La propiedad no se puede escribir si el proceso de asignación está vacío. Se mostrará un error de compilación en el editor y se producirá un error en tiempo de ejecución..
Los procesos de recuperación y asignación pueden ser públicos, privados o protegidos.. Los derechos de acceso a la propiedad corresponden a los derechos menos restrictivos de los dos procesos. Vea Derechos de acceso a una propiedad para más detalles.
Las propiedades pueden ser globales. Una propiedad es global para la clase cuando los procesos de recuperación y asignación son globales.. Si uno de los procesos es global, todos los procesos deben ser globales; de lo contrario, se muestra un error de compilación.

Miembros y propiedades

Una propiedad y un miembro existente pueden tener el mismo nombre. En este caso, las órdenes de prioridad son las siguientes:
  • en los procesos de la propiedad, el miembro tiene prioridad sobre la propiedad.
  • en el resto del código, la propiedad tiene prioridad sobre el miembro.
Por lo tanto, un miembro puede ser reemplazado por una propiedad sin modificar el código que utiliza el miembro.
Los procesos de un bien no pueden utilizar recursivamente el bien. Si no se nombra a ningún miembro como la propiedad, el uso de la propiedad en uno de sus procesos provocará un error de compilación.

Herencia

Las propiedades de las clases base se heredan en las clases derivadas.
Una propiedad puede sobrecargarse en una clase derivada. Los procesos de una propiedad son siempre considerados como virtuales: se ignora el uso de la palabra clave VIRTUAL.
La herencia múltiple está soportada por las propiedades. Las siguientes sintaxis pueden utilizarse para llamar a las propiedades de las clases base:
  • Ancestor.Property si la clase derivada tiene una sola clase base
  • BaseClass.Property en todos los casos.

Pasar las propiedades de un parámetro a una función o procedimiento de WLanguage

Si el parámetro se pasa por referencia (caso por defecto) y no se teclea:
  • la propiedad se pasa en parámetro.
  • no se ejecuta ningún proceso asociado a la propiedad durante la llamada.
  • la lectura del parámetro formal ejecuta el código de recuperación de valor.
  • la escritura del parámetro formal ejecuta el código de asignación de valor.
Si el parámetro es por valor pasado (LOCAL) y no mecanografiado:
  • el valor de la propiedad se pasa en el parámetro.
  • el código de recuperación de valor se ejecuta durante la llamada.
  • la lectura del parámetro formal accede al valor pasado durante la llamada y no ejecuta el código de recuperación de valor.
  • la escritura del parámetro formal modifica el valor pasado durante la llamada y no ejecuta el código de asignación de valor.
Si el parámetro se pasa por referencia (caso por defecto) y se escribe:
  • la propiedad se pasa en parámetro.
  • el tipo de propiedad debe ser correcto. De lo contrario, se produce un error de WLanguage.
  • no se ejecuta ningún proceso asociado a la propiedad durante la llamada.
  • la lectura del parámetro formal ejecuta el código de recuperación de valor.
  • la escritura del parámetro formal ejecuta el código de asignación de valor.
Si el parámetro es por valor pasado (LOCAL) y con tipo específico:
  • el valor de la propiedad se pasa en el parámetro.
  • el código de recuperación de valor se ejecuta durante la llamada.
  • si es necesario, el valor de la propiedad se convierte en el tipo de parámetro.
  • la lectura del parámetro formal accede al valor pasado durante la llamada y no ejecuta el código de recuperación de valor.
  • la escritura del parámetro formal modifica el valor pasado durante la llamada y no ejecuta el código de asignación de valor.
Versiones 15 y posteriores
Instancias de clase con contexto HFSQL independiente

Presentación

Una copia del contexto HFSQL se puede asociar a una instancia de clase. Todos los accesos a HFSQL realizados desde los métodos y propiedades de la clase (llamadas a funciones o acceso a los registros) operan sobre la copia del contexto de la instancia de clase.
señalar: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
AndroidUniversal Windows 10 AppJava Esta funcionalidad no está disponible.

Sintaxis

Se debe utilizar la siguiente sintaxis:
// Declare the class
IndependentHyperFileSQLClass is class, independent HyperFileSQL context

END
or
// Declare the class
IndependentHyperFileSQLClass is class
<independent HyperFileSQL context>

END
// Declare the class
IndependentHFSQLClass is Class, independent <light/full> HFSQL context
END
or
// Declare the class
IndependentHFSQLClass is Class
<independent light/full HFSQL context>

END
Por ejemplo:
IndependentHFSQLClass is Class, independent light HFSQL context
Versiones 20 y posteriores
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.
Nueva funcionalidad versión 20
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.

Uso

El contexto HFSQL de la instancia se crea copiando el contexto actual durante la ejecución del constructor.
Los operadores = y <= entre dos instancias con contexto HFSQL independiente copian el contenido del contexto HFSQL.
No le aconsejamos que utilice instancias de clase con contexto HFSQL independiente para simular un alias en un único archivo HFSQL o en un registro específico de un archivo HFSQL.. De hecho, copiar el contexto HFSQL afecta a todos los elementos del contexto (archivos, vistas, consultas, conexiones,...) y puede llevar bastante tiempo.
Una instancia de clase con contexto HFSQL independiente sólo se puede utilizar en el hilo que ejecuta el constructor. Para manipular una instancia de clase con contexto HFSQL independiente en varios hilos, debes hacerlo:
  • asignar una nueva instancia de la clase
  • realizar una copia de la instancia de origen con el operador = o <=.
Nueva funcionalidad versión 15
Instancias de clase con contexto HFSQL independiente

Presentación

Una copia del contexto HFSQL se puede asociar a una instancia de clase. Todos los accesos a HFSQL realizados desde los métodos y propiedades de la clase (llamadas a funciones o acceso a los registros) operan sobre la copia del contexto de la instancia de clase.
señalar: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
AndroidUniversal Windows 10 AppJava Esta funcionalidad no está disponible.

Sintaxis

Se debe utilizar la siguiente sintaxis:
// Declare the class
IndependentHyperFileSQLClass is class, independent HyperFileSQL context

END
or
// Declare the class
IndependentHyperFileSQLClass is class
<independent HyperFileSQL context>

END
// Declare the class
IndependentHFSQLClass is Class, independent <light/full> HFSQL context
END
or
// Declare the class
IndependentHFSQLClass is Class
<independent light/full HFSQL context>

END
Por ejemplo:
IndependentHFSQLClass is Class, independent light HFSQL context
Versiones 20 y posteriores
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.
Nueva funcionalidad versión 20
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.

Uso

El contexto HFSQL de la instancia se crea copiando el contexto actual durante la ejecución del constructor.
Los operadores = y <= entre dos instancias con contexto HFSQL independiente copian el contenido del contexto HFSQL.
No le aconsejamos que utilice instancias de clase con contexto HFSQL independiente para simular un alias en un único archivo HFSQL o en un registro específico de un archivo HFSQL.. De hecho, copiar el contexto HFSQL afecta a todos los elementos del contexto (archivos, vistas, consultas, conexiones,...) y puede llevar bastante tiempo.
Una instancia de clase con contexto HFSQL independiente sólo se puede utilizar en el hilo que ejecuta el constructor. Para manipular una instancia de clase con contexto HFSQL independiente en varios hilos, debes hacerlo:
  • asignar una nueva instancia de la clase
  • realizar una copia de la instancia de origen con el operador = o <=.
Instancias de clase con contexto HFSQL independiente

Presentación

Una copia del contexto HFSQL se puede asociar a una instancia de clase. Todos los accesos a HFSQL realizados desde los métodos y propiedades de la clase (llamadas a funciones o acceso a los registros) operan sobre la copia del contexto de la instancia de clase.
señalar: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
AndroidUniversal Windows 10 AppJava Esta funcionalidad no está disponible.

Sintaxis

Se debe utilizar la siguiente sintaxis:
// Declare the class
IndependentHyperFileSQLClass is class, independent HyperFileSQL context

END
or
// Declare the class
IndependentHyperFileSQLClass is class
<independent HyperFileSQL context>

END
// Declare the class
IndependentHFSQLClass is Class, independent <light/full> HFSQL context
END
or
// Declare the class
IndependentHFSQLClass is Class
<independent light/full HFSQL context>

END
Por ejemplo:
IndependentHFSQLClass is Class, independent light HFSQL context
Versiones 20 y posteriores
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.
Nueva funcionalidad versión 20
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.
Light/Full parámetro:
  • La palabra clave "light" activa la copia inmediata de parte del contexto HFSQL.
    Sólo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server..
  • La palabra clave"full" activa la copia inmediata del contexto HFSQL.
    Recomendado si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto del llamante.

Uso

El contexto HFSQL de la instancia se crea copiando el contexto actual durante la ejecución del constructor.
Los operadores = y <= entre dos instancias con contexto HFSQL independiente copian el contenido del contexto HFSQL.
No le aconsejamos que utilice instancias de clase con contexto HFSQL independiente para simular un alias en un único archivo HFSQL o en un registro específico de un archivo HFSQL.. De hecho, copiar el contexto HFSQL afecta a todos los elementos del contexto (archivos, vistas, consultas, conexiones,...) y puede llevar bastante tiempo.
Una instancia de clase con contexto HFSQL independiente sólo se puede utilizar en el hilo que ejecuta el constructor. Para manipular una instancia de clase con contexto HFSQL independiente en varios hilos, debes hacerlo:
  • asignar una nueva instancia de la clase
  • realizar una copia de la instancia de origen con el operador = o <=.
comentario

Leyenda de los iconos utilizados

Los diferentes iconos utilizados son los siguientes:
Procedimiento público
Procedimiento público
Miembro público
Miembro público
Procedimiento protegido
Procedimiento protegido
Miembro protegido
Miembro protegido
Procedimiento privado
Procedimiento privado
Miembro privado
Miembro privado
Método público virtual
Método público virtual
Método público constante
Método público constante
Método virtual protegido
Método virtual protegido
Miembro protegido constante
Miembro protegido constante
Método virtual privado
Método virtual privado
Socio privado constante
Socio privado constante
Método público global
Método público global
Miembro público global
Miembro público global
Método global protegido
Método global protegido
Miembro protegido global
Miembro protegido global
Método privado global
Método privado global
Miembro privado global
Miembro privado global
Constante
Constante

Nuevas características desde la versión 9

Una clase que contiene un miembro del personaje no tiene el mismo comportamiento que en las versiones anteriores. De hecho, los caracteres estaban codificados en 1 byte en las versiones anteriores y en 2 bytes desde la versión 9.
Le recomendamos que utilice el tipo "1 byte entero".
Versión mínima requerida
  • Versión 10
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario