AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Gestión de lenguajes externos / Pascal y Delphi
  • Presentación
  • Implementación
  • 1. Incluyendo los archivos de la interfaz Pascal de WINDEV
  • 2. Incluyendo las declaraciones HFSQL
  • Declaración e inicialización
  • 1. Declarar el contexto HFSQL y los contextos de trabajo de cada archivo
  • 2. Inicialización de contextos HFSQL
  • 3. Carga de la biblioteca WINDEV (WDL)
  • Ejecutar códigos WINDEV desde el idioma externo
  • 1. Llamar a un código de WLanguage
  • 2. Recuperación de los eventos lanzados en las ventanas WINDEV
  • Finalización de la aplicación
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Vamos a llamar a los elementos desarrollados en WINDEV (proyecto, ventanas, ... análisis) del lenguaje pascal. El código WLanguage utilizado desde el lenguaje externo se compilará dinámicamente y se ejecutará durante la llamada.
Este modo se ilustra en el proyecto City.PAS (formato Pascal), disponible en el subdirectorio "Idiomas externos\EN\Pascal" del directorio de instalación de WINDEV.
Implementación

1. Incluyendo los archivos de la interfaz Pascal de WINDEV

Si está utilizando una base de datos en su aplicación, el primer paso consiste en generar su análisis. En la description de este análisis, especifique el lenguaje de programación utilizado así como el directorio que contendrá los archivos fuente.
A través de la generación se genera un esqueleto de programa (*.pas). Esta operación también creará el archivo.h (ver abajo) necesario para utilizar sus archivos de datos.
Los siguientes archivos deben estar incluidos en un proyecto Pascal para poder llamar a la interfaz Pascal de WINDEV:
  • Squelet.PAS (contiene la description del análisis)
  • .H
  • WDHF.PAS
  • WINDEV.PAS
Los archivos.h y.pas que describen la estructura de los archivos de datos serán generados automáticamente por WINDEV al generar el análisis.

2. Incluyendo las declaraciones HFSQL

Los archivos .h y .pas correspondientes a la description de los archivos de análisis deben ser añadidos al proyecto Pascal. Las declaraciones de los archivos de datos se incluyen en el archivo .h.
Por ejemplo, en el código City.pas (proporcionado con WINDEV en el directorio "External Languages\ES\Pascal"), estos ficheros son "CityPas.H" y "Squelet.PAS".
Declaración e inicialización

1. Declarar el contexto HFSQL y los contextos de trabajo de cada archivo

Si la aplicación debe gestionar ficheros de datos, se debe declarar un contexto de trabajo HFSQL así como un contexto de trabajo para cada fichero de datos.
Estas declaraciones se realizan en el proyecto City.pas a través de las siguientes líneas:
{------------- include of the descriptions of the files used --------------}
{ write for each file $I .WDR }
{$I CityPas.h} (* record    *)
var DP:typeDP;
var VI:typeVI;
{$F+} { compilation directive  $F+ mandatory at the beginning }
procedure HDescribeRecord;
{Describes each file of the analysis}
VAR
lArrItmST:array[0..1] of longint;
sTypeST: String;
lArrItmCI:array[0..1] of longint;
sTypeCI: String;
begin
lArrItmDP[0]:= 31; lArrItmDP[1]:= 3;
sTypeDP:= '11';
EL_HDescribeRecord(gCtx, stringtoptr('STATE'), 34,
longint(@lArrItmST[0]), 2, stringtoptr(sTypeST), @ST);
lArrItmVI[0]:= 41; lArrItmVI[1]:= 6;
sTypeVI:= '11';
EL_HDescribeRecord(gCtx, stringtoptr('CITY'), 47,
longint(@lArrItmCI[0]), 2, stringtoptr(sTypeCI), @CI);
End;
procedure HInit;
VAR
{Creating the context}
sAnalysisName:String;
sPassword:String;
begin
gCtx:= EL_CreateHFContext(2);
sAnalysisName:= 'CITYPAS.WDD';
sPassword:= ' ';
{Describing each record}
HDescribeRecord;
{Initializing HF}
CALLWD('HFCTX');
If EL_Hinitshare(gCtx,WDLong) = 0 Then
begin
CALLWD('Error,Error initializing the HF context');
End
{opening the analysis}
else
begin
If HOpenAnalysis(gCtx, sAnalysisName, sPassword, ' ', ' ', ' ') = 0 Then
begin
CALLWD('Error,Error opening the analysis');
End;
End;
End;

2. Inicialización de contextos HFSQL

Si su aplicación está llamando a una base de datos, el acceso a HFSQL debe prepararse ahora.. La siguiente prueba se utiliza para comprobar si esta inicialización se realiza correctamente:
{Creating the context}
begin
HInit;
End;

3. Carga de la biblioteca WINDEV (WDL)

La biblioteca WINDEV (.WDL extension) contiene todos los elementos del proyecto (ventanas, informes, clases, consultas, análisis, ...). Por lo tanto, debe ser cargado en la memoria para que sus componentes puedan ser llamados.
La operación de carga se realiza mediante CALLWD('LIBRA,disco ...') de la siguiente manera:
Atención: Si la biblioteca a cargar contiene ventanas, el código de cada una de estas ventanas debe incluirse en el archivo ".WDW" correspondiente ("Incluir el código compilado" debe estar marcado en la pestaña "Detalles" del description de cada ventana).
begin{ Opening the library }
{ if WDInt is not null, the library was not found! }
CALLWD('LIBRA,disk,city.wdl'); { Open the library. }
if WDInt0 then
begin
{ Library not found }
CALLWD('Error,The CITY.WDL library must be found in the parent directory.');
{ indicate to WINDEV that the program will be ended }
{ use HFDone only if an HFSQL database is used }
HFDone;
WDEnd;
Halt;
end;
...
end;
Ejecutar códigos WINDEV desde el idioma externo

1. Llamar a un código de WLanguage

Todas las funciones WLanguage se pueden llamar desde el idioma externo. El comportamiento de estas funciones WLanguage, así como los valores devueltos, son idénticos tanto si se llaman:
  • de WINDEV o
  • desde la interfaz del lenguaje externo
Para conocer los parámetros y los valores de retorno de una función WLanguage, consulte la ayuda en línea o la documentación sobre WLanguage.
La llamada a un WLanguage Procedure desde la interfaz externa se realiza a través de CallWD. Por ejemplo:
open the first window of the program that contains the menu }
CALLWD('OPEN,menu.wdw);
Notará que el parámetro esperado por CallWD es una cadena de caracteres que contiene el código WLanguage a ejecutar.
Al igual que WLanguage codificado en WINDEV, esta cadena no distingue entre mayúsculas y minúsculas (caracteres en mayúscula / minúscula). Por lo tanto, el comando "Info" también se puede escribir como "INFO".

2. Recuperación de los eventos lanzados en las ventanas WINDEV

La entrada en las ventanas WINDEV requiere recuperar los eventos desencadenados en estas ventanas.
Para recuperar los eventos de usuario (haga clic en un menú, en un botón, etc.), debe implementar un sistema basado en un bucle en su programa Pascal.. Este bucle permanecerá Active mientras se abra la ventana WINDEV y se utilizará para interceptar cada acción del usuario.
Para conocer el tipo de acción realizada por el usuario, tiene la posibilidad de utilizar una cadena de caracteres Variable (en WLanguage) denominada 'WDKey '. Esta Variable se usará en su código WLanguage para señalar al programa Pascal qué botón ha sido pulsado, por ejemplo.
Ejemplo: Código Pascal
{ open the first window of the program that contains the menu }
CALLWD('OPEN,menu.wdw);
{ the program loops until the File Exit option }
{ is selected }
while( WDKey<>'ESC' ) do
begin
{ perform the input of the menu }
CALLWD('SCREEN,input');
{------------------------------------------------}
{ Decode the selected option.  }
{ WDString contains the sequence of shortcut letters }
{ that are used to select the menu choice }
{------------------------------------------------}
if( WDKey='FQ' ) then WDKey:='ESC';{ Exit              }
if( WDKey='RN' ) then FindCity;      { Search by City }
if( WDKey='RD' ) then FindState;      { Search by State }
if( WDKey='DD' ) then LstState;      { Display the list.    }
if( WDKey='DI' ) then LstPrint;     { Print.         }
if( WDKey='DC' ) then LstConfig;      { Configure the printout   }
end;
Código de "Archivo .. Salida" de la ventana "Menú" de WINDEV (WLanguage):
if( WDKey='FQ' ) then WDKey:='ESC';{ Exit from the loop }
Cuando el usuario haga clic en el menú "Archivo .. Salir", se devolverá WDKey al código Pascal para realizar la siguiente acción.
Finalización de la aplicación
Para finalizar el uso de la interfaz externa, todo lo que tiene que hacer es llamar a HFDoneShare y WDDone que no esperan ningún parámetro.. Por ejemplo:
{ Done... }
{ use HFDoneShare only if an HFSQL database is used }
HFDoneShare;
WDEnd;
end.
Versión mínima requerida
  • Versión 9
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 23/11/2023

Señalar un error o enviar una sugerencia | Ayuda local