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.

  • Puede abrir y ejecutar scripts existentes escritos en VBScript y JavaScript (Jscript). Para poder crear nuevos scripts escritos en VBScript, debe habilitar la opción Legacy.Scripts.SupportOldLanguages en el cuadro de diálogo Advanced Settings dialog.

  • La documentación de la API de scripting puede encontrarse aquí: Scripting API Objects. Tenga en cuenta que esta documentación se actualizó por última vez para una versión anterior de Altium Designer. Aunque muchos de los principios y enfoques seguirán siendo los mismos, tenga presente que las interfaces, los objetos, los métodos, las propiedades y similares han cambiado desde entonces, y no reflejarán la totalidad de los disponibles en versiones posteriores del software.

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;
Cuando se edita un documento, aparece un asterisco junto al documento de script, y el icono en el panel Projects panel cambia a rojo. Cuando se edita una línea de código del script, aparece un bloque rojo en el margen izquierdo de la línea, indicando que la línea ha cambiado.

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.

Dado que todas las variables en los scripts son de tipo variant, no es necesario definir el tipo de la variable DefaultMessage en el script.

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.
Ejecución de una unidad de script simple HelloWorld desde el menú File » Run Script.

Este script tiene un procedimiento sin parámetros. Solo los procedimientos o funciones que don't tienen parámetros aparecen en el cuadro de diálogo Select Item To Run. Los procedimientos que requieren parámetros pasados se llaman desde dentro del script (o desde otro script), pero no desde un sistema externo como el cuadro de diálogo Select Item To Run, donde no se pasan parámetros.

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.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. Con un nuevo proyecto de script establecido, agregue un nuevo script al proyecto.

El formulario de script crea dos archivos: un archivo *.dfm que define los elementos y manejadores de la ventana del formulario, y un archivo *.pas que aloja los controladores de eventos y los procedimientos o funciones del formulario.

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.
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.

Los términos 'dialog' y 'script form' son descriptivamente equivalentes en esta guía. El término 'form' se refiere a la ventana que se está diseñando en tiempo real en el sistema de scripting, y 'dialog' es un formulario activo en el software que está esperando la respuesta del usuario y realiza una acción cuando se hace clic en un botón del cuadro de diálogo o en un control.

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. 
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.

Se pueden seleccionar y editar varios componentes simultáneamente. Las propiedades/eventos comunes a todos los componentes de la selección se mostrarán en el panel. Las propiedades/eventos que tengan valores diferentes entre componentes se mostrarán en blanco. Simplemente edite las propiedades y/o eventos según sea necesario; los cambios realizados se transmitirán instantáneamente a cada componente de la selección. Por ejemplo, puede que desee cambiar la fuente usada en el texto de varios botones. Seleccione todos los botones y cambie las propiedades enumeradas en la categoría Font según sea necesario; todos los botones se actualizarán para mostrar su texto con la misma fuente.

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.

Para obtener información más detallada sobre los componentes y sus propiedades, métodos y eventos, consulte la página Component Categories.

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.
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.

Todos los componentes utilizados en el panel descienden de TComponent en la Borland Delphi Visual Component Library.

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.

Los componentes se pueden colocar en una forma de script haciendo doble clic en el componente en el panel Tool Palette, o haciendo clic una vez en el componente y luego haciendo clic en la forma donde desea que aparezca.

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 Visible determina 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.
Seleccione un componente y edite sus propiedades en el panel Object Inspector.

El cuadro de comentarios en la parte inferior del panel Object Inspector proporciona una descripción de la propiedad resaltada.

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;
Para ver los controladores de eventos predefinidos de cualquier componente en su forma de script, seleccione el componente y luego haga clic en la pestaña Events del panel Object Inspector.
Del mismo modo, el controlador de eventos para el botón Close se puede definir generando un evento 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.
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.

Se puede encontrar una versión de referencia de los scripts del proyecto Hello World en la carpeta Scripts\Delphiscript Scripts\General de la colección de scripts downloadable. Tenga en cuenta que estos son diseños de referencia heredados y no se actualizan.

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.
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.
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.

Para obtener una lista de teclas de acceso rápido que ayudan a agilizar el proceso de escribir y depurar scripts, consulte la página Script Editor Tools.

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
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.

AI-LocalizedLocalizado por IA
Si encuentra un problema, seleccione el texto/imagen y presioneCtrl + Enterpara enviarnos sus comentarios.
Disponibilidad de funciones

Las funciones disponibles dependen de la solución de Altium que tenga: Altium Develop, una edición de Altium Agile (Agile Teams o Agile Enterprise), o Altium Designer (con suscripción activa).

Si no ve alguna función mencionada en su software, contacte con Ventas de Altium para obtener más información.

Documentación heredada

La documentación de Altium Designer ya no está versionada. Si necesita acceder a la documentación de versiones anteriores de Altium Designer, visite la sección Documentación heredada de la página de Otros instaladores.

Contenido