Formularios y componentes
Descripción general de los componentes gráficos
El sistema de scripts gestiona dos tipos de componentes: los componentes visuales y los no visuales.
Los componentes visuales se utilizan para crear la interfaz de usuario, mientras que los componentes no visuales se emplean para diferentes tareas, como TimerOpenDialogMainMenu
- El
componente no visual puede utilizarse para activar código específico a intervalos programados, y el usuario nunca lo ve.Timer - El
,Button yEdit son componentes visuales.Memo
Ambos tipos de componentes aparecen en tiempo de diseño, pero los componentes no visuales no son visibles en tiempo de ejecución. Los componentes del
- Propiedades
- Eventos
- Métodos
Una
Un
Un
Todos los formularios de script tienen uno o más componentes. Los componentes suelen mostrar información o permiten al usuario realizar una acción. Por ejemplo, un LabelEditButton
En un formulario se puede colocar cualquier combinación de componentes y, mientras se ejecuta el script, el usuario puede interactuar con cualquier componente del formulario. Es tarea del programador decidir qué ocurre cuando un usuario hace clic en un botón o modifica el texto de un Edit
El sistema de scripts proporciona una serie de componentes que pueden utilizarse para crear interfaces de usuario complejas para los scripts. Para colocar un componente en un formulario, localiza su icono en elpanel «Paleta de herramientas» y haz doble clic en él. Esta acción coloca el componente en el formulario activo. La representación visual de la mayoría de los componentes se configura mediante sus propiedades. Inicialmente, un componente se coloca en una posición predeterminada en el formulario, pero se puede reposicionar (arrastrar) y cambiar su tamaño (estirar) según sea necesario. También puedes modificar el tamaño y la posición posteriormente utilizando el
Cuando se suelta un componente en un formulario, el sistema de scripts genera automáticamente el código necesario para utilizar el componente y actualiza el formulario de script. Solo es necesario configurar las propiedades e implementar el código del controlador de eventos para utilizar los métodos deseados y que el componente del formulario funcione.
Diseño de formularios de script
Un formulario de script está diseñado para interactuar con el usuario dentro del entorno. El diseño de formularios de script constituye el núcleo del desarrollo visual.
En la práctica, todos los componentes se colocan en un formulario de script, y cada propiedad que se configura se almacena en un archivo que describe el formulario (un *.DFM*.PAS.PAS.DFM
Al trabajar con un formulario de script y sus componentes, todas las propiedades de los elementos se pueden inspeccionar y modificar mediante el Caption
Creación de un nuevo formulario de script
Con un proyecto de script abierto, haz clic con el botón derecho del ratón sobre un proyecto en el EditScript1.pas
Visualización de un formulario de script
Un script debe contener un procedimiento que muestre el formulario cuando se ejecute el formulario de script. Dentro de este procedimiento, se puede invocar el ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
El ShowModalRunDialogDialogFormDialogForm.ShowModal
El ModalResultmrOkmrCancelShowModal
Procedure TForm.OKButtonClick(Sender: TObject); Begin ModalResult := mrOK; End; Procedure TForm.CancelButtonClick(Sender: TObject); Begin ModalResult := mrCancel; End; Procedure RunShowModalExample; Begin // Form's Visible property must be false for ShowModal to work correctly. If Form.ShowModal = mrOk Then ShowMessage('mrOk'); If Form.ShowModal = mrCancel Then ShowMessage('mrCancel'); End;
Cuando el usuario hace clic en cualquiera de los botones de este formulario de script, se cierra el cuadro de diálogo. No es necesario llamar al CloseModalResult
Ten en cuenta que, si deseas establecer el ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
Aceptación de entradas del usuario
Uno de los componentes más habituales que puede aceptar entradas del usuario es el TEditTMaskEdit
El ejemplo siguiente ilustra el proceso que se produce cuando el usuario hace clic en el botón tras escribir algo en el cuadro de edición. Si el usuario no ha escrito nada en el componente de edición (está en blanco), el controlador de eventos responde con un mensaje de advertencia.
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
Tenga en cuenta que el usuario puede cambiar el foco de entrada del cuadro de diálogo utilizando la
Respuesta a eventos
Cuando se hace clic en un botón de un formulario o en un componente, el sistema de scripting responde recibiendo una notificación de evento de Altium Designer y llamando al método de controlador de eventos adecuado.
El proyecto HelloWorld de la Scripts\DelphiScript Scripts\General\
El script de ejemplo ShowModal de la Scripts\DelphiScript Scripts\General\
Escribir controladores de eventos
Cada componente de un script de formulario tiene un conjunto de nombres de eventos, que son utilizados por los controladores de eventos del script para determinar cómo reaccionará este ante las acciones del usuario en Altium Designer. Por ejemplo, cuando un usuario hace clic en un botón de un formulario, Altium Designer envía un mensaje al script y este reacciona ante este nuevo evento. Si se especifica el OnClick
El código para responder a los eventos suele estar contenido en los controladores de eventos de DelphiScript, y todos los componentes tienen un conjunto de eventos a los que pueden reaccionar. Por ejemplo, todos los componentes en los que se puede hacer clic tienen un OnClickOnEnterOnExitOnEnterOnExit
En resumen, un evento es un vínculo entre un suceso en Altium Designer, como hacer clic en un botón, y un fragmento de código que responde a ese suceso. El código que responde es un controlador de eventos. Este código modifica los valores de las propiedades y llama a métodos.
Propiedades de los componentes
Para ver una lista de las propiedades de un componente, selecciona un componente y abre la
Eventos del componente
Para ver una lista de los eventos a los que puede reaccionar un componente, selecciona un componente y abre la
Por ejemplo, selecciona el TButtonOnClickOnClick

Si un botón tiene un CloseCloseClickOnClickClose
En resumen, selecciona un componente de botón, ya sea en el formulario o mediante el OnClick
Métodos de los componentes
Para ver una lista de métodos de un componente, consulta el documento «Referencia de componentes ».
Colocar componentes en un formulario de script
Para utilizar componentes del panel «Paleta de herramientas» en un script, es necesario que exista un formulario de script antes de poder soltar los componentes en él. Normalmente, cuando se sueltan componentes en un formulario de script, no es necesario crear ni destruir estos objetos, ya que el formulario de script lo hace automáticamente.
El sistema de scripts también genera automáticamente el código necesario para utilizar un componente y actualiza el formulario de script. A continuación, solo hay que configurar las propiedades, introducir código en los controladores de eventos y utilizar los métodos necesarios para implementar un formulario de script que funcione.
Creación de componentes en un script
Los componentes se pueden crear o destruir directamente en un script pasando un NilConstructorOpenSaveTOpenDialogTSaveDialog
Personalización de formularios de script
Los puntos esenciales para personalizar formularios de script son:
- Para forzar que un formulario permanezca encima de otros paneles abiertos, configura la
propiedad enFormStyle .fsStayOnTop - Para definir el comportamiento predeterminado de un formulario, establece la
en uno de los siguientes valores:FormKind ,fkNone ,fkNormal ofkServerPanel .fkModal - Si
está cerrado, el formulario será modal, es decir, esperará a que el usuario introduzca datos antes de continuar, por ejemplo, para cerrar el formulario. SifkModal entonces el formulario se mostrará como un panel de servidor. SifkServerPanel entonces el formulario se comportará como un formulario normal no modal.fkNormal - Para eliminar las barras de desplazamiento predeterminadas del formulario, cambia el valor de la propiedad
yHorzScrollBar .VertScrollBar - Para convertir el formulario en un marco MDI o en un elemento secundario MDI, utilice la
.FormStyle - Para cambiar el estilo del borde del formulario, utiliza la
yBorderIcons (los resultados se ven en tiempo de ejecución).BorderStyle - Para cambiar el icono del formulario minimizado, utilice la
.Icon - Para especificar la posición inicial de un formulario en la ventana de la aplicación, utiliza la
propiedad.Position - Para especificar el estado inicial del formulario (por ejemplo, minimizado, maximizado o normal), utiliza la
propiedad.WindowState - Para definir el área de trabajo del formulario en tiempo de ejecución, utiliza la
yClientHeight (tenga en cuenta queClientWidth yClientHeight representan el área dentro del borde del formulario;ClientWidth yHeight representan toda el área del formulario).Width - Para especificar qué control tiene el foco inicial en el formulario en tiempo de ejecución, utilice la
propiedad.ActiveControl - Para pasar todos los eventos de teclado al formulario, independientemente del control seleccionado, utilice la
propiedad.KeyPreview - Para especificar un menú concreto, si un formulario contiene más de un menú, utilice la
propiedad.Menu
Actualización de formularios y componentes de script
Cuando la interfaz de un formulario de script queda desactualizada —por ejemplo, cuando los controles no se actualizan o no se vuelven a dibujar—, estos pueden parecer bloqueados o dañados; esto podría deberse a un procesamiento intensivo en segundo plano por parte de dicho script.
El UpdateUpdate
Procedure TConverterForm.loadbuttonClick(Sender: TObject); Begin If OpenPictureDialog1.Execute then Begin XPProgressBar1.Position := 0; XStatusBar1.SimpleText := ' Loading...'; XStatusBar1.Update; // loading a monochrome bitmap only Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); // Check if image is monochrome, otherwise prompt a warning If Image1.Picture.Bitmap.PixelFormat > pf1bit Then Begin ShowWarning('The image is not a monochrome!'); Close; End; lImageSize.Caption := IntToStr(Image1.Picture.Width) + ' x ' + IntToStr(Image1.Picture.Height) + ' mils'; convertbutton.Enabled := True; LoadButton.Enabled := False; XStatusBar1.SimpleText := ' Ready...'; XStatusBar1.Update; End; End;
El fragmento de código anterior procede del PCB Logo CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator