Escribir scripts
Escritura de scripts
Hay una serie de conceptos y términos esenciales que se aplican a la escritura de scripts:
- Los procesos son cadenas de comandos que puede usar para ejecutar comandos en scripts.
- Los componentes son objetos de control visual en el panel Tool Palette panel que puede arrastrar y soltar en un formulario de script para manipular el diseño.
- Un componente colocado en un formulario de script tiene métodos, propiedades y eventos.
- Las interfaces de objeto son interfaces de objeto especiales que puede usar para extraer y modificar datos en documentos de diseño desde sus scripts.
Lenguajes de script
El lenguaje de scripting predeterminado está configurado como DelphiScript (*.pas). El propio motor de scripting está escrito en Embarcadero Delphi, y el panel Tool Palette está basado en la VCL (Visual Component Library) de Delphi.
Una unidad DelphiScript
Puede completarse un ejercicio de scripting rápido y básico creando primero un nuevo proyecto y un archivo de script. Suponiendo que el proyecto y el archivo de script estén configurados en el lenguaje DelphiScript, se puede introducir un sencillo script de "Hello World" como se muestra a continuación.
Procedure ShowAMessage;
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
ShowMessage(DefaultMessage);
End;
Dentro del procedimiento, hay una función estándar de DelphiScript ShowMessage que abre un cuadro de diálogo con el mensaje "Hello World", tal como lo define la variable DefaultMessage.
Ejecución del script
Para ejecutar uno de los scripts, seleccione File » Run Script en los menús principales y luego elija un procedimiento de script disponible en el cuadro de diálogo Select Item To Run. Cuando se ejecute una versión, se abrirá un cuadro de diálogo para mostrar el mensaje.

Ejecución de una unidad de script simple HelloWorld desde el menú File » Run Script.
Un script también puede ejecutarse usando el comando Run del editor, al que se accede mediante el botón Run , la tecla de acceso rápido F9 , o seleccionando Run » Run en los menús principales.
Junto con el propio comando Run, el menú desplegable Run ofrece una variedad de comandos de control y depuración de scripts.
Cuando se selecciona el comando Run por primera vez, se abrirá el cuadro de diálogo Select Item to Run, lo que le permitirá especificar el procedimiento principal de un script (ShowAMessage en este caso). Una vez configurado, el script puede ejecutarse repetidamente con facilidad desde el editor usando el comando Run . Use Run » Set Project Startup Procedure para cambiar la configuración a un procedimiento diferente, o cierre y vuelva a abrir el proyecto de script para borrar la configuración.
Para detener un script en ejecución, use el botón Stop , seleccione Run » Stop en el menú principal, o use el atajo Ctrl+F3.
Un formulario DelphiScript
Ampliando el proyecto HelloWorld creado anteriormente, se puede crear un script similar usando una unidad de formulario.
Un Script Form es una ventana de diálogo que puede alojar una variedad de controles, como botones, memos y cuadros de lista. Tiene controladores de eventos que responden cuando un control ha generado un evento, por ejemplo, cuando se hace clic en un botón.
Para crear el nuevo formulario de script, haga clic con el botón derecho en el nombre del proyecto desde el panel Projects panel, elija la opción Add New to Project y seleccione Script Form. El script puede guardarse y renombrarse usando File » Save As desde los menús principales.
Con un nuevo proyecto de script establecido, agregue un nuevo script al proyecto.
Para ver y editar los valores de las propiedades del formulario actualmente enfocado o de sus componentes, abra el panel Object Inspector. El panel Object Inspector se utiliza para cambiar las propiedades del formulario e insertar código en los controladores de eventos asociados con el formulario actual.

La configuración y las propiedades de la ventana del Script Form se muestran en el panel Object Inspector.
Tenga en cuenta que el Script Form ofrece dos pestañas en la parte inferior del documento: las pestañas Code y Form .
La pestaña Code contiene los controladores de eventos y procedimientos como se muestra arriba, mientras que la pestaña Form representa el cuadro de diálogo y tiene controles y controladores de eventos asociados. Use las pestañas o la tecla de acceso rápido F12 para cambiar entre ambas.
El panel Object Inspector le permite examinar y editar las propiedades y eventos de los componentes del formulario de script activo. Al hacer clic en un único componente del formulario de script activo en la ventana del editor de diseño, se seleccionará el componente y se mostrarán en el panel Object Inspector los atributos asociados a él. Como alternativa, use el campo desplegable en la parte superior del panel para elegir de una lista de todos los componentes colocados actualmente en el formulario activo. El propio formulario también está incluido.

Use el panel Object Inspector para configurar el cuadro de diálogo del formulario y su acción.
La información se muestra en dos pestañas: Properties y Events:
- La pestaña Properties del panel enumera todos los atributos de propiedad del componente seleccionado. La lista exacta de atributos disponibles dependerá del tipo concreto de componente que se esté inspeccionando en ese momento. Una propiedad es una característica de un objeto que influye ya sea en su comportamiento visible o en sus operaciones. Por ejemplo, la propiedad Visible (en la subcategoría Behavior ) determina si el objeto se muestra o no en el formulario de script en el que está colocado. Las propiedades de un componente pueden modificarse según sea necesario. Haga clic dentro del campo a la derecha de una propiedad y escriba directamente, active o desactive una casilla de verificación, o seleccione una entrada de una lista desplegable, según corresponda.
- La pestaña Events del panel proporciona una lista de todos los eventos a los que puede reaccionar el componente actualmente seleccionado. Una vez más, la lista exacta de eventos disponibles dependerá del tipo concreto de componente que se esté inspeccionando en ese momento. Cuando ocurre un evento, como hacer clic en un botón de un formulario, el script realizará la acción correspondiente, siempre que se haya definido en el código un procedimiento de manejo para el evento. Este tipo de procedimiento se denomina controlador de eventos.
La base esquemática para un controlador de eventos puede añadirse al código del documento de script desde el panel Object Inspector. Simplemente seleccione el componente para el que desea definir un evento, elija el tipo concreto de evento y luego haga doble clic dentro del campo a la derecha del evento. Se crea un nombre para el evento y se usa en la definición del nombre del procedimiento controlador del evento: FormName.EventName. El código esqueleto para el procedimiento controlador del evento se añade entonces al código principal del script, que pasa a ser la pestaña activa en el espacio de diseño. A continuación, puede codificarse el 'contenido' del procedimiento controlador del evento para proporcionar la respuesta deseada cuando el evento ocurra y sea detectado por el script en ejecución.
La sección inferior del panel proporciona una descripción resumida de la propiedad o evento actualmente seleccionado, cuando está disponible.
Para este script de formulario, cambie las propiedades Caption del formulario en el panel Object Inspector de HelloWorldForm a Hello World!. Estas cadenas coinciden con las usadas en el ejemplo de código de procedimiento y controlador de eventos que se muestra más abajo.
Agregar y configurar controles
Con la forma básica configurada, se pueden agregar controles al cuadro de diálogo según sea necesario accediendo al panel Tool Palette. El Tool Palette, basado en la Visual Component Library de Delphi, es una paleta de componentes que ofrece una amplia variedad de controles de ventana organizados como categorías de componentes (consulte las páginas Scripting Graphical Components y Component Categories para más detalles).

Las secciones del panel Tool Palette se pueden expandir y contraer mediante las pestañas de encabezado de región.
Use los controles en la parte superior del panel, los nombres de categoría y el menú contextual para configurar la presentación de los controles en el panel: expandir/contraer categorías, cambiar la presentación de los elementos de la paleta, etc.
Para la versión de cuadro de diálogo del proyecto "Hello World", hay dos botones en la forma: Display y Close. Haga clic en TButton en la región Standard del panel Tool Palette.
Haga esto dos veces para colocar dos botones en la forma. Un botón se utilizará para mostrar un mensaje "Hello World!" en un cuadro de diálogo independiente, y el segundo botón se utilizará para cerrar el cuadro de diálogo principal.
Todos los componentes del panel tienen Properties, Methods y Events asociados, donde:
-
Una Property es una característica de un objeto que influye ya sea en su comportamiento visible o en sus operaciones. Por ejemplo, la propiedad
Visibledetermina si un objeto puede verse en una forma de script. - Un Method es un procedimiento que siempre está asociado con un objeto y define el comportamiento de ese objeto.
- Un Event es una acción o suceso detectado por el script. En un script, el programador escribe código para cada Event Handler, diseñado para capturar un evento específico, como un clic del mouse.
Las propiedades y los eventos de un componente pueden examinarse y modificarse después de colocarlo usando el panel Object Inspector.
Usando el panel Object Inspector, las configuraciones de los dos botones se pueden cambiar desde sus nombres y títulos predeterminados.
Configure el nombre del primer botón como bDisplay y su título como Display. Configure el nombre del segundo botón como bClose y su título como Close. Esto es para que coincida con el código de ejemplo del controlador de eventos que se presenta a continuación.

Seleccione un componente y edite sus propiedades en el panel Object Inspector.
El código del controlador de eventos puede construirse haciendo referencia directamente a los controles de la forma. En este ejemplo, el botón Display iniciará un cuadro de diálogo ShowMessage sobre la forma existente, y la acción del botón Close cerrará esta forma.
Código del controlador de eventos
Al hacer doble clic en el botón Display se abrirá la forma en la vista Code y se creará el código base para su controlador de eventos. Como alternativa, seleccione el botón y luego la pestaña Events en el panel Object Inspector. Al hacer doble clic en el evento OnClick en el panel se abrirá la vista de código como se indicó anteriormente. Dentro de la vista Code, la instrucción ShowMessage se puede incluir en el controlador de eventos como se muestra en la lista siguiente.
Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
ShowMessage('Hello World!');
End;
OnClick que aplique la instrucción Close (form):
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
Close;
End;
Con los controladores de eventos definidos, debe haber un procedimiento en el script que se use como punto de inicio al invocar el cuadro de diálogo desde el software. Esto se agrega al final del script de código.
Tenga en cuenta que el nombre de la forma es HelloWorldForm y el nombre del procedimiento es RunHelloWorld; es importante tener nombres de forma únicos en el mismo script para evitar conflictos entre nombres de forma.
Procedure RunHelloWorld;
Begin
HelloWorldForm.ShowModal;
End;
El script se puede guardar y luego ejecutar desde los menús principales (File» Run Script)) ejecutando el elemento de procedimiento RunHelloWorld bajo la entrada HelloWorldDialog.
Como alternativa, el procedimiento se puede asignar al comando/botón Run mediante el menú Run » Set Startup Project Procedure.

Ejecutar un script de forma HelloWorld, donde el botón Display de la forma activa un cuadro de diálogo ShowMessage.
El panel Object Inspector facilita cambiar las propiedades y los eventos de una unidad de forma. Por ejemplo, para cambiar la posición de la forma en el espacio de trabajo, use el panel para modificar el valor poScreenCenter de la propiedad de posición de la forma. El cuadro de diálogo ahora se colocará en el centro de la pantalla del escritorio cuando se ejecute el script.
Llamada a un procedimiento
Como se mencionó anteriormente, cualquier script (que use el mismo conjunto de lenguaje) dentro de un proyecto tiene acceso a variables y procedimientos globales, por lo que un procedimiento en un script puede llamar a otro procedimiento en un script diferente del proyecto.
Esto puede demostrarse con la sección de código adicional ShowAParametricMessage en el proyecto de ejemplo HelloWorld:
Procedure ShowAParametricMessage(S : String);
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
If S = '' Then ShowMessage(DefaultMessage)
Else ShowMessage(S);
End;
Esto establece una variable de cadena 'S' que puede pasarse al procedimiento ShowAParametricMessage.
La cadena pasada se mostrará usando la función de cuadro de diálogo ShowMessage, mientras que un método simple If-Then-Else hace que se muestre un mensaje predeterminado "Hello World!" si la cadena está vacía.
Para ver esto en acción, abra el proyecto de ejemplo (HelloWorld.PrjScr) y agregue la línea resaltada en gris en el script HelloWorldDialog (no en el script HelloWorld), como se muestra a continuación.
...
Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
Showmessage('Hello World!');
End;
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
ShowAParametricMessage('Goodbye World');
close;
End;
Procedure RunHelloWorld;
Begin
HelloWorldForm.ShowModal;
End;
...
Cuando se ejecuta el script HelloWorldDialog y se hace clic en el botón Close , se llama al procedimiento global ShowAParametricMessage desde el script HelloWorld.

Se llama a un procedimiento paramétrico en el script HelloWorld desde el script HelloWorldDialog.
La llamada pasa la cadena de mensaje "Goodbye World" al procedimiento ShowAParametricMessage, por lo que este mensaje se muestra cuando se hace clic en el botón Close, antes de que la forma se cierre.

La llamada de script mostrada arriba inserta un mensaje especificado en el procedimiento de cierre de la forma HelloWoldDialog.
Si el parámetro de cadena pasado está vacío, ShowAParametricMessage(''), se muestra el mensaje predeterminado "Hello World!" tal como se define en el procedimiento ShowAParametricMessage.
Exploración de identificadores de script mediante el panel Code Explorer
El panel Code Explorer proporciona un resumen visual de todos los identificadores (variables, funciones y procedimientos) que se utilizan en el documento de script activo.

El panel Code Explorer
La información de identificadores que aparece en el panel está agrupada en las siguientes carpetas de nivel superior:
-
Procedures & Functions – incluye todos los procedimientos y funciones declarados en el documento de script activo. Para cada procedimiento/función, también se enumeran los parámetros pasados al procedimiento/función o las variables locales a este.
-
Variables – incluye todas las variables globales declaradas en el documento de script activo.
Si se declaran variables locales para un procedimiento/función, aparecerán en una subcarpeta de variables, bajo ese procedimiento/función. Se utilizan iconos únicos para distinguir entre los distintos identificadores:
|
Procedimiento |
|
Función |
|
Parámetro de procedimiento/función |
|
Variable (local o global) |
Al hacer doble clic en una entrada del panel (o seleccionarla y presionar la tecla Enter) se saltará al área correspondiente del código en el espacio de diseño.