diff --git a/docs/commands-legacy/super.md b/docs/commands-legacy/super.md deleted file mode 100644 index 13fdf54abe9f68..00000000000000 --- a/docs/commands-legacy/super.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -id: super -title: Super -displayed_sidebar: docs ---- - -**Super**( ...param : any )
**Super** : Object - -|Parameter|Type||Description| -|---|---|---|---| -|param|any|->|Parameter(s) to pass to the parent constructor| -|Result|Object|<-|Object's parent| - - -The **Super** keyword is described in the [**Classes page**](../Concepts/classes.md#super). - -#### Properties - -| | | -| --- | --- | -| Command number | 1706 | -| Thread safe | ✓ | - - diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md b/i18n/es/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md deleted file mode 100644 index d7410d749732a9..00000000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nombre* {; *} ) : Integer - -| Parámetro | Tipo | | Descripción | -| --- | --- | --- | --- | -| nombre | Text | → | Nombre del proceso del cual recuperar el número | -| * | Operator | → | Devolver el número del proceso servidor | -| Resultado | Integer | ← | Número de proceso | - - - -#### Descripción - -Process number devuelve el número del proceso cuyo nombre se pasa en *nom*. Si no se encuentra ningún proceso, Process number devuelve 0. - -El parámetro opcional *\** le permite recuperar, a partir de 4D Client, el número de un proceso que se está ejecutando en el servidor (un procedimiento almacenado). En este caso, el valor devuelto es negativo. Esta opción es particularmente útil cuando se utilizan los comandos [GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE") y [SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE"). Para mayor información, consulte las descripciones de estos comandos. - -Si el comando se ejecuta con el parámetro *\** desde un proceso en el equipo servidor, el valor devuelto es positivo. - -#### Ejemplo - -Usted crea una paleta flotante, que corre en un proceso separado, en el cual usted implementa sus propias herramientas para interactuar con el entorno Diseño. Por ejemplo, cuando selecciona un elemento en una lista jerárquica de palabras claves, usted quiere pegar algún texto en la ventana del primer plano del entorno Diseño. Para hacerlo, puede utilizar el Portapapeles, pero el evento de pegado debe ocurrir dentro del proceso Diseño. La siguiente función devuelve el número del proceso del proceso Diseño (si está activo): - -```4d -  // Método de proyecto Numero proceso Diseño -  // Numero proceso Diseño -> Entero largo -  // Numero proceso Diseño -> Número del proceso de Diseño -  - $0:=Process number("Proceso Diseño") -  // Nota: Esto puede no funcionar en el futuro si la fuente cambia -``` - -Con esta función, el método de proyecto listado pega el texto recibido como parámetro en la ventana del primer plano en el entorno Diseño (si aplica): - -```4d -  // Método de proyecto PEGAR TEXTO EN DISEÑO -  // PEGAR TEXTO EN DISEÑO ( Text ) -  //PEGAR TEXTO EN DISEÑO (Texto a pegar en la ventana de Diseño del primer plano) -  - var $1 : Text - var $vlDiseñoPID;$vlCont : Integer -  - $vlDiseñoPID:=Numero proceso Diseño - If($vlDiseñoPID #0) -  // Coloque el texto en el portapapeles -    SET TEXT TO PASTEBOARD($1) -  // Generar un evento Ctrl-V / Comando-V -    POST KEY(ASCII("v");Command key mask;$vlDiseñoPID) -  // Llamar repetitivamente DELAY PROCESS para que el minutero puede pasar -  // sobre el evento al proceso Diseño -    For($vlCont;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Ver también - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propiedades - -| | | -| --- | --- | -| Número de comando | 372 | -| Hilo seguro | ✓ | - - diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md deleted file mode 100644 index f30ed262ece30a..00000000000000 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md +++ /dev/null @@ -1,851 +0,0 @@ ---- -id: form-event-code -title: Form event code -slug: /commands/form-event-code -displayed_sidebar: docs ---- - -**Form event code** : Integer - -| Parámetro | Tipo | | Descripción | -| --- | --- | --- | --- | -| Resultado | Integer | ← | Número del evento de formulario | - - - -#### Compatibilidad - -**Form event code** se llamaba **Form event** en versiones anteriores de 4D. Se renombró para mayor claridad cuando se agregó el comando [FORM Event](form-event.md), que devuelve un objeto. - -#### Descripción - -**Form event code** devuelve un valor numérico que identifica el tipo de evento de formulario que acaba de ocurrir. Generalmente, **Form event code** se utiliza en un método formulario o en un método objeto. - -4D ofrece constantes predefinidas (ubicadas en el tema *Eventos formulario*) para comparar los valores devueltos por el comando **Form event code**. - -Ciertos eventos son genéricos (generados por todo tipo de objeto) y otros son específicos a un tipo de objeto particular. - -| Constante | Tipo | Valor | Comentario | -| ------------------------ | ------------ | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| On Load | Entero largo | 1 | El formulario se muestra o se imprime | -| On Mouse Up | Entero largo | 2 | *(Sólo imágenes)* El usuario acaba de liberar el botón izquierdo del ratón en un objeto Imagen | -| On Validate | Entero largo | 3 | Se ha valido la entrada de datos en el registro | -| On Clicked | Entero largo | 4 | Ocurre un clic sobre un objeto | -| On Header | Entero largo | 5 | El encabezado del formulario se va a imprimir o a mostrar | -| On Printing Break | Entero largo | 6 | Se va a imprimir una de las áreas de ruptura del formulario | -| On Printing Footer | Entero largo | 7 | Se va a imprimir el área de pie de página del formulario | -| On Display Detail | Entero largo | 8 | Un registro se va a mostrar en una lista o una línea se va a mostrar en un list box. | -| On VP Ready | Entero largo | 9 | (*Áreas 4D View Pro únicamente*) La carga del área 4D View Pro está completa | -| On Outside Call | Entero largo | 10 | El formulario recibe una llamada [POST OUTSIDE CALL](post-outside-call.md) | -| On Activate | Entero largo | 11 | La ventana del formulario se convierte en la ventana del primer plano | -| On Deactivate | Entero largo | 12 | La ventana del formulario deja de ser la ventana del primer plano | -| On Double Clicked | Entero largo | 13 | Un objeto ha recibido un doble clic | -| On Losing Focus | Entero largo | 14 | Un objeto de formulario está perdiendo el foco | -| On Getting Focus | Entero largo | 15 | Un objeto de formulario toma el foco | -| On Drop | Entero largo | 16 | Se han soltado datos en un objeto | -| On Before Keystroke | Entero largo | 17 | Un carácter está a punto de introducirse en el objeto que tiene el foco. [Get edited text](get-edited-text.md) devuelve el texto del objeto sin este carácter. | -| On Menu Selected | Entero largo | 18 | Se ha seleccionado un comando de menú | -| On Plug in Area | Entero largo | 19 | Un objeto externo solicitó que se ejecute su método de objeto | -| On Data Change | Entero largo | 20 | Se han modificado los datos de un objeto | -| On Drag Over | Entero largo | 21 | Los datos pueden soltarse en un objeto | -| On Close Box | Entero largo | 22 | Se ha hecho clic en la casilla de cerrar la ventana | -| On Printing Detail | Entero largo | 23 | Se va a imprimir el área de detalle del formulario | -| On Unload | Entero largo | 24 | El formulario se cierra y libera | -| On Open Detail | Entero largo | 25 | El formulario detallado asociado con el formulario de salida o con el listbox está apunto de ser abierto | -| On Close Detail | Entero largo | 26 | Se cierra el formulario de entrada y regresa al formulario de salida | -| On Timer | Entero largo | 27 | El número de tics definido por el comando [SET TIMER](set-timer.md) se ha pasado | -| On After Keystroke | Entero largo | 28 | Un carácter está apunto de introducirse en el objeto que tiene el foco. [Get edited text](get-edited-text.md) devuelve el contenido incluyendo este carácter | -| On Resize | Entero largo | 29 | La ventana del formulario se redimensiona | -| On After Sort | Entero largo | 30 | (*List box únicamente*) Se acaba de efectuar una ordenación estándar en una columna del list box | -| On Selection Change | Entero largo | 31 | *List box*: se modifica la selección actual de líneas o columnas*Registros en lista:* se modifica el registro actual o la selección actual de líneas en un formulario listado o en un subformulario*Lista jerárquica*: la selección en la lista se modifica luego de un clic o de presionar una tecla*Variable o campo editable*: la selección de texto o la posición del cursor en el área se modifica al hacer clic o presionar una tecla. | -| On Column Moved | Entero largo | 32 | (*List box únicamente*) El usuario mueve una columna de list box vía arrastrar y soltar | -| On Column Resize | Entero largo | 33 | (*List box únicamente*) El ancho de una columna de list box es modificado por un usuario con el ratón | -| On Row Moved | Entero largo | 34 | (*List box únicamente*) El usuario mueve una fila de un list box vía arrastrar y soltar | -| On Mouse Enter | Entero largo | 35 | El cursor del ratón entra al área gráfica de un objeto | -| On Mouse Leave | Entero largo | 36 | El cursor del ratón sale del área gráfica de un objeto | -| On Mouse Move | Entero largo | 37 | El cursor del ratón se mueve al menos un píxel O cuando se presiona una tecla de modificación (Ctrl, Alt, Bloq mayús). Si el evento está seleccionado para un objeto únicamente, se genera sólo cuando el cursor se encuentra dentro del área gráfica del objeto | -| On Alternative Click | Entero largo | 38 | *Botones 3D*: el área “flecha” de un botón 3D recibe un clic*List boxes*: en una columna de un array objeto, un botón de puntos suspensivos (atributo "alternateButton") recibe un clic
**Nota**: los botones de elipses están disponibles sólo para versiones v15 o superiores. | -| On Long Click | Entero largo | 39 | (*Botones 3D únicamente*) Se hace clic en un botón 3D y el botón del ratón permanece presionado por un cierto tiempo | -| On Load Record | Entero largo | 40 | En modo entrada en lista, se carga un registro durante modificación (el usuario hace clic en una línea del registro y un campo pasa a modo edición) | -| On Before Data Entry | Entero largo | 41 | (*List box únicamente*) Una celda de list box está a punto de pasar a modo edición | -| On Header Click | Entero largo | 42 | (*List box únicamente*) Ocurre un clic en un encabezado de columna del list box | -| On Expand | Entero largo | 43 | (Listas jerárquicas únicamente) Se ha expandido un elemento de la lista jerárquica utilizando un clic o una tecla | -| On Collapse | Entero largo | 44 | (Listas jerárquicas únicamente) Un elemento de la lista jerárquica se ha contraído vía un clic o una tecla | -| On After Edit | Entero largo | 45 | El contenido del objeto editable que tiene el foco acaba de ser modificado | -| On Begin Drag Over | Entero largo | 46 | Se va a arrastrar un objeto | -| On Begin URL Loading | Entero largo | 47 | (*Áreas web únicamente*) Un nuevo URL se carga en el área web | -| On URL Resource Loading | Entero largo | 48 | (*Áreas web únicamente*) Se carga un nuevo recurso en el área web | -| On End URL Loading | Entero largo | 49 | (*Áreas web únicamente*) Se han cargado todos los recursos del URL | -| On URL Loading Error | Entero largo | 50 | (*Áreas web únicamente*) Ocurrió un error cuando se cargaba el URL | -| On URL Filtering | Entero largo | 51 | (*Áreas web únicamente*) Un URL fue bloqueado por el área web | -| On Open External Link | Entero largo | 52 | (*Áreas web únicamente*) Se ha abierto un URL externo en el navegador | -| On Window Opening Denied | Entero largo | 53 | (*Áreas web únicamente*) Se ha bloqueado una ventana pop-up | -| On bound variable change | Entero largo | 54 | Se modifica la variable relacionada a un subformulario. | -| On Page Change | Entero largo | 56 | Al cambiar de página actual en el formulario | -| On Footer Click | Entero largo | 57 | (*List box únicamente)* Un clic en el pie de un list box o de una columna de list box | -| On Delete Action | Entero largo | 58 | *(Listas jerárquicas y list box únicamente)*. El usuario solicita borrar un elemento. | -| On Scroll | Entero largo | 59 | El usuario desplaza el contenido de un campo o de una variable imagen utilzando el ratón o una tecla. | -| On Row Resize | Entero largo | 60 | (*4D View Pro únicamente*) La altura de una línea es modificada por un usuario con el ratón | -| On VP Range Changed | Entero largo | 61 | El rango de celdas 4D View Pro ha cambiado (por ejemplo, el cálculo de una fórmula, el valor eliminado de una celda, etc.) | - -**Nota:** los eventos específicos de formularios de salida no pueden utilizarse en **formularios proyecto**. Estos son: On Display Detail, On Open Detail, On Close Detail, On Load Record, On Header, On Printing Detail, On Printing Break, On Printing Footer. - -#### Eventos y métodos - -Cuando ocurre un evento de formulario, 4D efectúa las siguientes acciones: - -* Primero, examina los objetos del formulario y llama al método de objeto para todos los objetos (involucrados en el evento) cuya propiedad de evento de objeto correspondiente ha sido seleccionada. -* Segundo, llama al método de formulario si la propiedad de evento de formulario correspondiente ha sido seleccionada. - -No asuma que los métodos de objeto, si los hay, se llamarán en un orden particular. La regla es que los métodos de objeto siempre se llaman antes que los métodos de formulario. Si un objeto es un subformulario, se llama primero a los métodos de objeto del formulario de salida del subformulario, luego el método de formulario del formulario de salida. 4D luego continúa llamando a los métodos del formulario padre. En otras palabras, cuando un objeto está en un subformulario, 4D utiliza la misma regla que para los métodos de objeto y formulario en subformularios. - -Excepto para los eventos On Load y On Unload, si la propiedad de evento de formulario no está seleccionada para un evento dado, esto no evita las llamadas a los métodos de objeto para los objetos cuya propiedad de evento está seleccionada. Es decir, la activación o desactivación de un evento a nivel del formulario no tiene efecto en las propiedades del evento de los objetos. - -El número de objetos involucrados en un evento depende de la naturaleza del evento: - -* Evento On Load, los métodos de objeto de todos los objetos del formulario (de todas las páginas) que tengan seleccionada la propiedad de evento On Load serán llamados. Luego, si la propiedad de evento de formulario On Load está seleccionada, el método de formulario será llamado. -* Eventos On Activate u On Resize, ningún método de objeto será llamado, porque este evento aplica al formulario como un todo y no como un objeto en particular. Por lo tanto, si el evento de formulario On Activate está seleccionado, sólo se llamará al método de formulario. -* Evento On Timer, este evento se genera únicamente si el método de formulario contiene una llamada previa al comando [SET TIMER](set-timer.md). Si la propiedad de evento de formulario On Timer está seleccionada, sólo el método de formulario recibirá el evento, no se llamará al método de formulario. -* Evento On Drag Over, sólo se llamará el método del objeto soltable involucrado en el evento (si la propiedad de evento "Soltable" está seleccionada para el objeto). No se llamará el método de formulario. -* Por el contrario, para el evento On Begin Drag over, se llamará el método del objeto o el método del formulario del objeto arrastrado (Si la propiedad de evento "Arrastrable" está seleccionada para el objeto). - -**Advertencia:** a diferencia de otros eventos, durante un evento On Begin Drag over, el método llamado se ejecuta en el contexto del proceso de arrastrar y soltar del objeto fuente, no en el del proceso de arrastrar y soltar el objeto de destino. Para mayor información, consulte la sección *Arrastrar y soltar*. - -* Si los eventos On Mouse Enter, On Mouse Move y On Mouse Leave han sido seleccionados para el formulario, se generan para cada objeto del formulario. Si están seleccionados para un objeto, son generados sólo para el objeto. En caso de superposición de objetos, el evento se genera por el primer objeto capaz de administrarlo que se encuentre del nivel superior al inferior. Los objetos que se hicieron invisibles utilizando el comando [OBJECT SET VISIBLE](object-set-visible.md) no generan estos eventos. Durante la entrada de datos, otros objetos pueden recibir este tipo de eventos dependiendo de la posición del ratón. -Note que el evento On Mouse Move se genera cuando el cursor del ratón se mueve pero también cuando el usuario presiona una tecla de modificación como **Mayús**, **Bloq Mayús**, **Ctrl** u **Opción** (esto permite manejar las operaciones de arrastrar y soltar de tipo copia o desplazamiento). -* Registros en lista: la secuencia de llamadas a métodos y eventos de formularios en formularios listados visualizados a través de [DISPLAY SELECTION](display-selection.md) / [MODIFY SELECTION](modify-selection.md) y los subformularios es la siguiente: - -| Para cada objeto del área de encabezado: | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Método objeto con evento On Header Método formulario con evento On Header Para cada registro: Para cada objeto en el área de detalle: Método de objeto con evento On Display Detail Método de formulario con evento On Display Detail | -* No se permite llamar un comando 4D que muestre una caja de diálogo desde los eventos On Display Detail y On Header y provoca un error de sintaxis. -Más particularmente, los comandos relacionados son: [ALERT](alert.md), [DIALOG](dialog.md), [CONFIRM](confirm.md), [Request](request.md), [ADD RECORD](add-record.md), [MODIFY RECORD](modify-record.md), [DISPLAY SELECTION](display-selection.md) y [MODIFY SELECTION](modify-selection.md). -* On Page Change: este evento sólo está disponible a nivel de los formularios (se llama en el método formulario). Se genera cada vez que cambia la página actual del formulario (seguido de una llamada al comando [FORM GOTO PAGE](form-goto-page.md) o de una acción estándar de navegación). Note que el evento se genera luego de la carga completa de la página, es decir una vez todos los objetos que contiene se inicializan (incluyendo las áreas web). Este evento es útil para ejecutar código que necesite que todos los objetos se inicialicen de antemano. También puede utilizarlo para optimizar la aplicación al ejecutar código (por ejemplo una búsqueda) sólo después de la visualización de una página específica del formulario y no tan pronto como se carga la página 1\. Si el usuario no accede a esta página, el código no se ejecuta. - -La siguiente tabla resume cómo se llaman los métodos de formulario y objetos para cada tipo de evento: - -| **Evento** | **Métodos de objeto** | **Método de formulario** | **Qué objetos** | -| ------------------------ | ---------------------------------- | ------------------------ | ----------------------------- | -| On Load | Sí | Sí | Todos | -| On Unload | Sí | Sí | Todos | -| On Validate | Sí | Sí | Todos | -| On Clicked | Sí (si cliqueable o editable) (\*) | Sí | Sólo el objeto implicado | -| On Double Clicked | Sí (si cliqueable o editable) (\*) | Sí | Sólo el objeto implicado | -| On Before Keystroke | Sí (si editable) (\*) | Sí | Sólo el objeto implicado | -| On After Keystroke | Sí (si editable) (\*) | Sí | Sólo el objeto implicado | -| On After Edit | Sí (si editable) (\*) | Sí | Sólo el objeto implicado | -| On Getting Focus | Sí (si tabulable) (\*) | Sí | Sólo el objeto implicado | -| On Losing Focus | Sí (si tabulable) (\*) | Sí | Sólo el objeto implicado | -| On Activate | Nunca | Sí | Ninguno | -| On Deactivate | Nunca | Sí | Ninguno | -| On Outside Call | Nunca | Sí | Ninguno | -| On Begin drag over | Sí (si arrastrable) (\*\*) | Sí | Sólo el objeto implicado | -| On Drop | Sí (si soltable) (\*\*) | Sí | Sólo el objeto implicado | -| On Drag Over | Sí (si soltable) (\*\*) | Nunca | Sólo el objeto implicado | -| On Mouse Enter | Sí | Sí | Todos | -| On Mouse Move | Sí | Sí | Todos | -| On Mouse Leave | Sí | Sí | Todos | -| On Mouse Up | Sí | Nunca | Sólo el objeto implicado | -| On Menu Selected | Nunca | Sí | Ninguno | -| On bound variable change | Nunca | Sí | Ninguno | -| On Data Change | Sí (si modificable) (\*) | Sí | Sólo el objeto implicado | -| On Plug in Area | Sí | Sí | Sólo el objeto implicado | -| On Header | Sí | Sí | Todos | -| On Printing Detail | Sí | Sí | Todos | -| On Printing Break | Sí | Sí | Todos | -| On Printing Footer | Sí | Sí | Todos | -| On Close Box | Nunca | Sí | Ninguno | -| On Display Detail | Sí | Sí | Todos | -| On Open Detail | No, excepto para List boxes | Sí | Ninguno excepto List box | -| On Close Detail | No, excepto para List boxes | Sí | Ninguno excepto List box | -| On Resize | Nunca | Sí | Ninguno | -| On Selection Change | Sí (\*\*\*) | Sí | Sólo el objeto implicado | -| On Load Record | Nunca | Sí | Ninguno | -| On Timer | Nunca | Sí | Ninguno | -| On Scroll | Sí | Nunca | Objeto involucrado únicamente | -| On Picture Scroll | Sí | Sí | Objeto involucrado únicamente | -| On Before Data Entry | Sí (List box) | Nunca | Sólo el objeto implicado | -| On Column Moved | Sí (List box) | Nunca | Sólo el objeto implicado | -| On Row Moved | Sí (List box) | Nunca | Sólo el objeto implicado | -| On Column Resize | Sí (List box) | Nunca | Sólo el objeto implicado | -| On Header Click | Sí (List box) | Nunca | Sólo el objeto implicado | -| On After Sort | Sí (List box) | Nunca | Sólo el objeto implicado | -| On Long Click | Sí (Botón 3D) | Sí | Sólo el objeto implicado | -| On Alternative Click | Sí (Botón 3D y list box) | Nunca | Sólo el objeto implicado | -| On Expand | Sí (Lista jerárq.) | Nunca | Sólo el objeto implicado | -| On Collapse | Sí (Lista jerárq.) | Nunca | Sólo el objeto implicado | -| On Delete Action | Sí (Lista jerárq. y list box) | Nunca | Sólo el objeto implicado | -| On URL Resource Loading | Sí (Web Area) | Nunca | Sólo el objeto implicado | -| On Begin URL Loading | Sí (Web Area) | Nunca | Sólo el objeto implicado | -| On URL Loading Error | Sí (Web Area) | Nunca | Sólo el objeto implicado | -| On URL Filtering | Sí (Web Area) | Nunca | Sólo el objeto implicado | -| On End URL Loading | Sí (Web Area) | Nunca | Sólo el objeto implicado | -| On Open External Link | Sí (Web Area) | Nunca | Sólo el objeto implicado | -| On Window Opening Denied | Sí (Web Area) | Nunca | Sólo el objeto implicado | -| On VP Ready | Sí (Área 4D View Pro) | Sí | Sólo el objeto implicado | - -(\*) Para mayor información, ver la sección "Eventos, objetos y propiedades" a continuación. -(\*\*) Consulte la sección "*Arrastrar y soltar*" para mayor información. -(\*\*\*) Sólo los objetos de tipo list box, lista jerárquica y subformulario soportan este evento. - -**IMPORTANTE:** siempre tenga en cuenta que, para cualquier evento, el método de un formulario o de un objeto se llama si el evento correspondiente es seleccionado para el formulario u objeto. El beneficio de desactivar eventos en el entorno Diseño (utilizando la Lista de propiedades del editor de formularios) es que usted puede reducir de manera importante el número de llamadas a métodos y por lo tanto optimizar de manera significativa la velocidad de ejecución de sus formularios. - -**Advertencia:** los eventos On Load y On Unload son generados por objetos si están activados para el objeto y el formulario al cual pertenece el objeto. Si los eventos están activados para el objeto únicamente, no ocurrirán; estos dos eventos también deben activarse a nivel del formulario. - -#### Eventos, objetos y propiedades - -Un método de objeto es llamado si el evento puede realmente ocurrir para el objeto, dependiendo de su naturaleza y propiedades. La siguiente sección detalla los eventos que usted utilizará generalmente para manejar los diferentes tipos de objetos. - -Recuerde que la Lista de propiedades del editor de formularios sólo muestra los eventos compatibles con el objeto seleccionado o el formulario. - -##### Objetos cliqueables - -Los objetos cliqueables son administrables principalmente con el ratón. Son los siguientes: - -* Variables o campos editables de tipo Booleano -* Botones, botones por defecto, botones de opción, casillas de selección, rejillas de botones -* Botones 3D, Botones de opción 3D, Casillas de selección 3D -* Menús desplegables, menús jerárquicos desplegables, menús imagen -* Listas desplegables, menús -* Áreas de desplazamiento, listas jerárquicas, list boxes y columnas de list box -* Botones invisibles, botones inversos, botones opción imagen -* Termómetros, reglas, dials (también conocidos como objetos deslizables) -* Pestañas -* Separadores. - -Cuando el evento On Clicked u On Double Clicked se selecciona para uno de estos objetos, puede detectar y administrar los clics en el objeto, utilizando el comando Form event code que devuelve On Clicked u On Double Clicked, dependiendo del caso. -Si ambos eventos están seleccionados para un objeto, los eventos On Clicked y On Double Clicked serán generados cuando el usuario haga doble clic en el objeto. - -**Nota:** a partir de 4D v14, los campos y variables editables que contienen texto (tipo texto, fecha, hora o número) también generan los eventos On Clicked y On Double Clicked. - -Para todos estos objetos, el evento On Clicked ocurre una vez se libera el botón del ratón. Sin embargo, hay varias excepciones: - -* Botones invisibles - El evento On Clicked ocurre tan pronto como se hace clic y no espera a que se libere el botón del mouse. -* Objetos deslizables (termómetros, reglas, y dials) - Si el formato de salida indica que el método de objeto debe llamarse mientras usted desliza el control, el evento On Clicked ocurre tan pronto como se hace clic. - -En el contexto del evento On Clicked, puede probar el número de clics efectuados por el usuario con la ayuda del comando [Clickcount](clickcount.md). - -**Nota:** algunos de estos objetos pueden activarse con el teclado. Por ejemplo, una vez que una casilla de selección obtiene el foco, puede seleccionarse utilizando la barra espaciadora. En tal caso, se genera un evento On Clicked. - -**Advertencia:** los combo boxes no se consideran objetos cliqueables. Un combo box debe tratarse como un área de texto editable cuya lista desplegable asociada ofrece valores por defecto. Por lo tanto, usted puede manejar entrada de datos en un combo box con la ayuda de los eventos On Before Keystroke, On After Keystroke y On Data Change. - -**Nota**: a partir de 4D v13, los objetos de tipo pop up/lista desplegable y menú desplegable jerárquico pueden generar el evento On Data Change. Esto le permite detectar la activación del objeto cuando se selecciona un valor diferente del valor actual. - -##### Objetos editables por teclado - -Los objetos editables por teclado son objetos en los cuales usted introduce datos utilizando el teclado y para los cuales puede filtrar los datos de entrada al menor nivel detectando los eventos On After Edit, On Before Keystroke, On After Keystroke y On Selection Change. - -Los objetos y tipos de datos editables son los siguientes: - -* Todos los campos editables de tipo alfa, texto, fecha, hora, numérico u (On After Edit únicamente) imagen -* Todas las variables editables de tipo alfa, texto, fecha, hora, numérico u (On After Edit únicamente) imagen -* Combo boxes (excepto On Selection Change) -* List boxes. - -**Nota**: a partir de 4D v14, los campos y variables editables que contienen texto (tipo texto, fecha, hora o número) también generan los eventos On Clicked y On Double Clicked. - -**Nota:** aunque son objetos “editables”, las listas jerárquicas no manejan los eventos formulario On After Edit, On Before Keystroke y On After Keystroke (Ver también el párrafo “Listas jerárquicas” a continuación). - -* On Before Keystroke y On After Keystroke - -**Nota:** a partir de la versión 2004.2 de 4D, el evento On After Keystroke puede generalmente ser reemplazado por el evento On After Edit (ver a continuación). - -Una vez los eventos On Before Keystroke y On After Keystroke hayan sido seleccionados para un objeto, puede detectar y administrar las pulsaciones de teclas en el objeto, utilizando el comando **Form event code** que devolverá On Before Keystroke y luego On After Keystroke (para mayor información, consulte la descripción del comando [Get edited text](get-edited-text.md)). Estos eventos también son activados por comandos de lenguaje que simulan la acción del usuario, tales como [POST KEY](post-key.md). - -Recuerde que las modificaciones del usuario que no se llevan a cabo utilizando el teclado (pegar, arrastrar-soltar, etc.) no se tienen en cuenta. Para procesar estos eventos, debe utilizar On After Edit. - -**Nota:** los eventos On Before Keystroke y On After Keystroke no se generan durante la utilización de un método de entrada. Un método de entrada (o IME, Input Method Editor) es un programa o un componente sistema que puede utilizarse para introducir caracteres complejos o símbolos (por ejemplo, japoneses o chinos) utilizando un teclado occidental. - -* On After Edit -Cuando se utiliza, este evento se genera después de cada cambio realizado al contenido de un objeto editable, sin importar la acción que originó el cambio, es decir: -\- Las acciones de edición estándar que modifican el contenido tales como pegar, cortar, borrar o cancelar; -\- Soltar un valor (acción similar a pegar); -\- Toda entrada de teclado realizada por el usuario; en este caso, el evento On After Edit se genera después de los eventos On Before Keystroke y On After Keystroke, si se utilizan. -\- Toda modificación realizada utilizando un comando de lenguaje que estimula una acción de usuario (por ejemplo [POST KEY](post-key.md)). -Atención, las siguientes acciones NO activan este evento: -\- Las acciones de edición que no modifican el contenido del área, como copiar o seleccionar todo, o arrastrar un valor (acción similar a copiar); sin embargo, estas acciones modifican la ubicación del cursor y desencadenan el evento On Selection Change. -\- Las modificaciones a los contenidos por programación, excepto para los comandos que simulan una acción de usuario. -Este evento puede utilizarse para controlar acciones de usuario con el fin de prevenir que peguen un texto muy largo, bloquear ciertos caracteres o evitar que se corte un campo de contraseña. -* On Selection Change: cuando se aplica a un campo o variable de texto dinámico (editable o no), este evento se dispara cada vez que la posición del cursor cambia. Esto sucede, por ejemplo, tan pronto como el usuario selecciona el texto utilizando el ratón o las teclas de flecha, o cuando el usuario introduce texto. Esto le permite llamar, por ejemplo, comandos como [GET HIGHLIGHT](get-highlight.md). - -##### Objetos modificables - -Los objetos modificables tienen una fuente de datos cuyos valores pueden modificarse utilizando el ratón o el teclado; no son considerados verdaderamente como controles de interfaz de usuario manejados a través del evento On Clicked. Estos objetos son los siguientes: - -* Todos los campos editables (excepto BLOBs) -* Todas las variables editables (excepto BLOBs, punteros, y arrays) -* Combo boxes -* Objetos externos (para los cuales la entrada de datos es validada por el plug-in) -* Listas jerárquicas -* List boxes y columnas de list box. - -Estos objetos reciben eventos On Data Change. Cuando el evento On Data Change está seleccionado para uno de estos objetos, usted puede detectar y administrar el cambio de los valores de la fuente de datos, utilizando el comando **Form event code** que devolverá On Data Change. El evento es generado tan pronto como la variable asociada con el objeto sea actualizada internamente por 4D (por lo general, cuando el área de entrada del objeto pierde el foco). - -##### Objetos tabulables - -Los objetos tabulables obtienen el foco cuando utiliza la tecla Tab para alcanzarlos y/o cuando hace clic en ellos. El objeto que tiene el foco recibe los caracteres (digitados en el teclado) que no son modificadores de un comando de menú o de un objeto tal como un botón. - -Todos los objetos son tabulables, EXCEPTO los siguientes: - -* Variables o campos no editables -* Rejillas de botones -* Botones 3D, botones opción 3D, casillas de selección 3D -* Menús desplegables, menús jerárquicos desplegables -* Menús/listas desplegables -* Menús imagen -* Áreas de desplazamiento -* Botones invisibles, botones inversos, botones opción imágenes -* Gráficos -* Objetos externos (para los cuales la entrada de datos es aceptada por el plug-in 4D) -* Pestañas -* Separadores. - -Cuando los eventos On Getting Focus y/o On losing Focus son seleccionados para un objeto tabulable, usted puede detectar y administrar el cambio de foco, utilizando el comando [Form event](form-event.md "Form event") que devolverá On Getting Focus u On losing Focus, dependiendo del caso. - -##### Botones 3D - -Los botones 3D le permiten establecer interfaces gráficas avanzadas (para una descripción de los botones 3D, consulte el Manual de Diseño). Además de los eventos genéricos, dos eventos específicos pueden utilizarse para administrar estos botones: - -* On Long Click: este evento se genera cuando un botón 3D recibe un clic y el botón del ratón se mantiene presionado por un cierto periodo de tiempo. En teoría, el periodo de tiempo para el cual este evento se genera es igual a la longitud máxima de tiempo que separa un doble clic, como está definido en las preferencias del sistema. -Este evento puede ser generado para todos los estilos de botones 3D, botones de opción 3D y casillas de selección 3D, con excepción de los botones 3D de “antigua generación” (estilo offset de fondo) y las áreas de flechas de botones 3D con menús desplegables (ver abajo). - -Este evento se utiliza generalmente para mostrar menús desplegables en caso de clics largos en los botones. El evento On Clicked, si está seleccionado, se genera si el usuario libera el botón del ratón antes del tiempo límite de “clic largo”. - -* On Alternative Click: algunos estilos de botones 3D pueden estar asociados a un menú desplegable y mostrar una flecha. Hacer clic en esta flecha hace que aparezca una caja de selección que ofrece un conjunto de acciones alternativas en relación con la acción principal del botón. -4D le permite administrar este tipo de botón utilizando el evento On Alternative Click. Este evento se genera cuando el usuario hace clic en la “flecha” (tan pronto como el botón del ratón sea presionado): -\- Si el menú desplegable es de tipo “separado,” el evento sólo se genera cuando un clic ocurre en la parte del botón con la flecha. -\- Si el menú desplegable es de tipo “enlazado,” el evento se genera cuando ocurre un clic en cualquier parte del botón. Por favor tenga en cuenta que el evento On Long Click no puede generarse con este tipo de botón. - -![](../assets/en/commands/pict2074286.en.png) - -Los estilos de botones 3D, botones de opción 3D y casillas de selección 3D que aceptan la propiedad “Con menú desplegable” son: Ninguno, Botón de barra de herramientas, Bevel, Bevel redondeado y Office XP. - -##### List box - -Varios eventos formulario pueden utilizarse para administrar las diferentes características específicas de los list box: - -* On Before Data Entry: este evento se genera justo antes de que una celda de list box sea editada (antes de que el cursor de entrada aparezca). Este evento permite al desarrollador, por ejemplo, mostrar un texto diferente dependiendo de que el usuario esté en modo visualización o en modo edición. -* On Selection Change: este evento se genera cada vez que la selección actual de filas o de columnas del list box se modifica. Este evento también se genera para las listas de registros y listas jerárquicas. -* On Column Moved: este evento se genera cuando una columna del list box es movida por el usuario utilizando arrastrar y soltar. No se genera si la columna se arrastra y suelta en su ubicación inicial. El comando [LISTBOX MOVED COLUMN NUMBER](listbox-moved-column-number.md) devuelve la nueva posición de la columna. -* On Row Moved: este evento se genera cuando una fila del list box es movida por el usuario utilizando arrastrar y soltar. No se genera si la fila es arrastrada y soltada en su ubicación inicial. -* On Column Resize: este evento se genera cuando el largo de una columna del list box es modificado por el usuario. A partir de 4D v16, el evento se activa "en vivo", es decir, se envía de forma continua durante el evento, durante el tiempo que el list box o la columna en cuestión estén siendo redimensionados. Este redimensionamiento se realiza manualmente por un usuario, o puede ocurrir como resultado del redimensionamiento del list box y su columna junto con la propia ventana del formulario (si el formulario se redimensiona manualmente o utilizando el comando [RESIZE FORM WINDOW](resize-form-window.md)). -Nota: el evento On Column Resize no se dispara cuando se cambia el tamaño de una columna "falsa" (para más información sobre columnas falsas, consulte *Tema Opciones de redimensionamiento*). -* On Expand y On Collapse: estos eventos se generan cuando una línea de list box jerárquico se despliega o contrae. -* On Header Click: este evento se genera cuando ocurre un clic en el encabezado de una columna en el list box. En este caso, el comando [Self](self.md) le permite conocer el encabezado de la columna en la que se hizo clic. El evento On Clicked se genera cuando un clic derecho (Windows) o Ctrl+clic (Mac OS) ocurre en una columna o en un encabezado de columna. Puede probar el número de clics realizados por el usuario utilizando el comando [Clickcount](clickcount.md). -Si la propiedad **Ordenable** fue seleccionada para el list box, usted puede decidir si permite o no una ordenación estándar de la columna pasando el valor 0 ó -1 en la variable $0: -\- Si $0 es igual a 0, se efectúa la ordenación estándar. -\- Si $0 es igual a -1, no se efectúa la ordenación estándar y el encabezado no muestra la flecha de ordenación. El desarrollador puede aún generar una ordenación de las columnas basada en criterios de ordenación personalizados utilizando los comandos de gestión de arrays de 4D. -Si la propiedad **Ordenable** no está seleccionada para el list box, la variable $0 no se utiliza. -* On Footer Click: este evento está disponible para el objeto list box o columna de list box. Se genera cuando ocurre un clic en el pie de un list box o de una columna de list box. En este caso, el comando [OBJECT Get pointer](object-get-pointer.md) devuelve un puntero a la variable del pie donde se hizo clic. El evento se genera para clic izquierdo y derecho. - Puede probar el número de clics realizados por el usuario utilizando el comando [Clickcount](clickcount.md). -* On After Sort: este evento se genera justo después de que se efectúe una ordenación estándar (por ejemplo, no se genera si $0 devuelve -1 en el evento On Header Click). Este mecanismo es útil para conservar los sentidos de las últimas ordenaciones efectuadas por el usuario. En este evento, el comando [Self](self.md) devuelve un puntero a la variable del encabezado de la columna ordenada. -* On Delete Action: este evento se genera cada vez que el usuario intenta borrar los elementos seleccionados presionando la tecla suprimir (**Supr** o **Retroceder**) o seleccionando el comando **Eliminar** del menú **Edición**. Este evento sólo está disponible a nivel del objeto list box. Note que generar el evento es la única acción realizada por 4D: el programa no borra los elementos. El desarrollador debe manejar la eliminación y los mensajes de advertencia previos que se muestren. -* On Scroll (nuevo en v15): este evento se genera tan pronto como el usuario desplaza las filas o columnas de la lista. El evento sólo se genera cuando el desplazamiento es el resultado de una acción del usuario: utilizando barras y/o cursores de desplazamiento, la rueda del ratón o el teclado. No se genera cuando el desplazamiento es debido a la ejecución del comando [OBJECT SET SCROLL POSITION ](object-set-scroll-position.md). -Este evento se dispara después de cualquier otro evento de usuario relacionado con la acción de desplazamiento (On Clicked, On After Keystroke, etc.). El evento sólo se genera en el método objeto (no en el método formulario). Consulte el ejemplo 15. -* On Alternative Click (nuevo en v15): este evento se genera en las columnas de list box de tipo array de objetos, cuando el usuario hace clic en un botón de puntos suspensivos de widget (atributo "alternateButton"). Para más información, consulte la sección *Utilizar arrays objetos en columnas*. - -Dos eventos genéricos también pueden utilizarse en el contexto de un list box de tipo "selección": - -* On Open Detail: este evento se genera cuando un registro está apunto de ser mostrado en el formulario detallado asociado al list box de tipo "selección" (y antes de que este formulario se abra). -* On Close Detail: este evento se genera cuando un registro mostrado en el formulario detallado asociado al list box está a punto de cerrarse (sin importarle si el registro fue modificado o no). - -##### Listas jerárquicas - -Además de los eventos genéricos, varios eventos específicos pueden utilizarse para administrar las acciones que los usuarios en las listas jerárquicas: - -* On Selection Change: este evento se genera cada vez que la selección en la lista jerárquica se modifica después de un clic o de que se presione una tecla. -Este evento también es generado en los objetos list box y listas de registros. -* On Expand: este evento se genera cada vez que un elemento de la lista jerárquica se despliega con un clic o al presionar una tecla. -* On Collapse: este evento se genera cada vez que un elemento de la lista jerárquica se contrae con un clic o al presionar una tecla. -* On Delete Action: este evento se genera cada vez que el usuario intenta borrar los elementos seleccionados presionando una tecla de supresión (**Supr** o **Retroceso**) o seleccionando el comando **Eliminar** del menú **Edición**. Note que la generación del evento es la única acción efectuada por 4D: el programa no borra ningún elemento. El desarrollador debe encargarse de la eliminación y de todos los mensajes de alerta que aparezcan (ver el ejemplo). - -Estos eventos no son mutuamente exclusivos. Pueden generarse uno después del otro para una lista jerárquica: - -\- En respuesta a presionar una tecla (en orden): - -| **Evento** | **Contexto** | -| --------------------- | ------------------------------------------------------------------------ | -| On Data Change | Un elemento estaba en edición | -| On Expand/On Collapse | Apertura/cierre de una sublista utilizando las teclas de flechas -> o <- | -| On Selection Change | Selección de un nuevo elemento | -| On Clicked | Activación de la lista utilizando el teclado | - - -\- En respuesta a un clic (en orden): - -| **Evento** | **Contexto** | -| -------------------------------------- | --------------------------------------------------------------------------------- | -| On Data Change | Un elemento estaba en edición | -| On Expand/On Collapse | Apertura/cierre de una sublista utilizando los iconos de despliegue/contracción o | -| Doble-clic en una sublista no editable | | -| On Selection Change | Selección de un nuevo elemento | -| On Clicked / On Double Clicked | Activación de la lista por un clic o un doble clic | - -##### Variables y campos imagen - -* El evento formulario On Scroll se genera tan pronto como el usuario desplaza una imagen dentro del área (campo o variable) que lo contiene. Puede desplazar el contenido de una área imagen cuando el tamaño del área es menor a su contenido y el formato de visualización es **"Truncado (no centrado)"**. Para mayor información, consulte *Formatos imagen*. -El evento se genera cuando el desplazamiento es el resultado de una acción del usuario: utilizando los cursores o las barras de desplazamiento, utilizando la rueda del ratón o las teclas de desplazamiento del teclado (para mayor información sobre el desplazamiento utilizando el teclado, consulte *Barras de desplazamiento*). Este evento no se genera cuando el objeto se desplaza por la ejecución del comando [OBJECT SET SCROLL POSITION ](object-set-scroll-position.md). Este evento se dispara luego de que un evento de usuario relacionado con la acción de desplazamiento (On Clicked, On After Keystroke, etc.). Se genera en el método objeto (no en el método formulario). Consulte el ejemplo 14. -* (Nuevo en v16) El evento On Mouse Up se genera cuando el usuario acaba de liberar el botón izquierdo del ratón mientras se arrastra en un área de imagen (campo o variable). Este evento es útil, por ejemplo, cuando se desea que el usuario pueda mover, redimensionar o dibujar objetos en un área SVG. -Cuando se genera el evento On Mouse Up, puede obtener las coordenadas locales donde se soltó el botón del ratón. Estas coordenadas se devuelven en el **MouseX** y **MouseY** *Variables sistema*. Las coordenadas se expresan en píxeles con respecto a la esquina superior izquierda de la imagen (0,0). -Al utilizar este evento, debe llamar al comando [Is waiting mouse up](is-waiting-mouse-up.md) para manejar los casos en que el gestor de estado del formulario podría estar desincronizado. Este es el caso, por ejemplo, cuando un cuadro de diálogo de alerta se muestra sobre el formulario, mientras que el botón del ratón no se ha liberado. Para más información y un ejemplo de uso del evento On Mouse Up, por favor consulte la descripción del comando [Is waiting mouse up](is-waiting-mouse-up.md). - -**Nota:** si la opción "Arrastrable" se marca para el objeto imagen, el evento On Mouse Up nunca se genera. - -##### Subformularios - -Un objeto contenedor de subformulario (objeto incluido en el formulario padre, contiene una instancia de subformulario) soporta los siguientes eventos: - -* On Load y On Unload: respectivamente apertura y cierre del subformulario (estos eventos también deben activarse a nivel de formulario padre para que sean tenidos en cuenta). Note que estos eventos se generan antes que los del formulario padre. Note también, que de acuerdo con los principios de funcionamiento de los eventos de formulario, si el subformulario se ubica en una página diferente a la página 0 ó 1, estos eventos sólo se generarán cuando la página se muestre/cierre (y no cuando el formulario se muestre/cierre). -* On Validate: validación de la entrada de datos en el subformulario. -* On Data Change: el valor de la variable del objeto contenedor del subformulario ha sido modificado. -* On Getting Focus y On Losing Focus: el contenedor del subformulario obtiene o pierde el foco. Estos eventos son generados en el método del objeto de subformulario cuando se seleccionan. Se envían al método de formulario del subformulario, lo que significa, por ejemplo, que puede administrar la visualización de los botones de navegación en el subformulario en función del foco. -Note que los objetos de subformulario pueden ellos mismos tener el foco. -* On bound variable change: este evento específico se genera en el contexto del método de formulario del subformulario tan pronto como un valor se asigna a la variable asociada al subformulario en el formulario padre (incluso si el mismo valor es reasignado) y si el subformulario pertenece a la página del formulario actual o a la página 0\. Para mayor información sobre la gestión de subformularios, consulte el manual de *Diseño*. - -**Nota:** es posible definir todo tipo de evento personalizado que puede ser generado en un subformulario vía el comando [CALL SUBFORM CONTAINER](call-subform-container.md). Este comando le permite llamar al método del objeto contenedor y pasarle un código de evento. - -Los siguientes eventos también son recibidos en el método formulario del subformulario: - -* On Clicked y On Double Clicked \- estos eventos generados en el subformulario son recibidos en primer lugar por el método formulario del subformulario y luego por el método formulario del formulario local. -* On Resize \- este evento se envía al método formulario del subformulario cuando el tamaño del objeto subformulario del formulario padre se ha modificado. - -##### Areas web - -Hay siete eventos de formularios específicamente disponibles para las áreas web: - -* On Begin URL Loading: este evento se genera al inicio de la carga de un nuevo URL en el área Web. La variable "URL" asociada con el área web permite conocer el URL que se está cargando. -**Nota:** el URL que se está cargando es diferente del URL actual (consulte la descripción del comando [WA Get current URL](wa-get-current-url.md "WA Get current URL")). -* On URL Resource Loading: este evento se genera cada vez que se carga un nuevo recurso (imagen, marco, etc.) en la página web actual. La variable "Progression" asociada al área le permite buscar el estado actual de la carga. -* On End URL Loading: este evento se genera cuando se cargan todos los recursos del URL actual. Puede llamar el comando [WA Get current URL](wa-get-current-url.md "WA Get current URL") para conocer el URL cargado. -* On URL Loading Error: este evento se genera cuando se detecta un error durante la carga de un URL. Puede llamar el comando [WA GET LAST URL ERROR](wa-get-last-url-error.md "WA GET LAST URL ERROR") para obtener información sobre el error. -* On URL Filtering: este evento se genera cuando la carga de un URL es bloqueada por el área web debido a un filtro definido utilizando el comando [WA SET URL FILTERS](wa-set-url-filters.md "WA SET URL FILTERS"). Puede conocer el URL bloqueado utilizando el comando [WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL"). -* On Open External Link: este evento se genera cuando la carga de un URL es bloqueada por el área Web y el URL se abre con el navegador del sistema actual, debido a un filtro definido utilizando el comando [WA SET EXTERNAL LINKS FILTERS](wa-set-external-links-filters.md "WA SET EXTERNAL LINKS FILTERS"). Puede conocer el URL bloqueado utilizando el comando [WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL"). -* On Window Opening Denied: este evento se genera cuando al abrir una ventana pop-up ha sido bloqueada para el área Web. Las áreas web 4D no permiten la apertura de ventanas pop-up. Puede conocer el URL bloqueado utilizando el comando [WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL"). - -##### Áreas 4D View Pro - -Los siguientes eventos están disponibles para las áreas 4D View Pro. - -* On After Edit: este evento se genera después de que se haya realizado una edición en el área 4D View Pro. -* On Clicked: este evento se genera cuando se produce un clic en la ventana gráfica del área 4D View Pro (fuera de los encabezados, barras de desplazamiento o barra de herramientas) -* On Column Resize: este evento se genera cuando un usuario modifica el ancho de una columna. -* On Double Clicked: este evento se genera cuando se produce un doble clic en el área 4D View Pro. -* On Header Click:este evento se genera cuando se produce un clic en el encabezado de una columna o fila. -* On Row Resize: este evento se genera cuando un usuario modifica la altura de una fila. -* On Selection Change: este evento se genera cuando se modifica la selección actual de filas o columnas. -* On VP Readyeste evento se genera cuando se completa la carga del área 4D View Pro. Debe usar este evento para escribir el código de inicialización para el área. - -Para más información sobre estos eventos, consulte la sección *Evento formulario On VP Ready*. - -#### Ejemplo 1 - -Este ejemplo muestra el evento On Validate utilizado para asignar automáticamente (a un campo) la fecha cuando el registro es modificado: - -```4d -  //Método de un formulario - Case of -  // ... -    :(Form event code=On Validate) -       [aTable]Last Modified On:=Current date - End case -``` - -`` - -#### Ejemplo 2 - -En este ejemplo, la gestión completa de un menú desplegable, (inicialización, clics del usuario y liberación de objeto) está encapsulada en el método del objeto: - -```4d -  //Método de objeto del menú desplegable asBurgerSize - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asBurgerSize;3) -       asBurgerSize{1}:="Small" -       asBurgerSize{1}:="Medium" -       asBurgerSize{1}:="Large" -    :(Form event code=On Clicked) -       If(asBurgerSize#0) -          ALERT("You chose a "+asBurgerSize{asBurgerSize}+" burger.") -       End if -    :(Form event code=On Unload) -       CLEAR VARIABLE(asBurgerSize) - End case -``` - -#### Ejemplo 3 - -Este ejemplo muestra cómo aceptar y administrar una operación de arrastrar y soltar para un objeto de campo que sólo acepta valores de imágenes. - -```4d -  //Método de objeto de campo Imagen editable [aTable] - Case of -    :(Form event code=On Drag Over) -  //Ha comenzado una operación arrastrar y soltar y el ratón está sobre el campo -  //Obtener la información sobre el objeto fuente -       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess) -  //Note que no necesitamos probar el número de proceso fuente -  //para el método de objeto ejecutado ya que es el mismo proceso -       $vlDataType:=Type($vpSrcObject->) -  //¿Los datos fuente son una imagen (campo, variable o array)? -       If(($vlDataType=Is picture)|($vlDataType=Picture array)) -  //Si es así, acepte el arrastrar. -          $0:=0 -       Else -  //De lo contrario, rechace el arrastrar -          $0:=-1 -       End if -    :(Form event code=On Drop) -  //Los datos fuente han sido soltados sobre el objeto, por lo tanto necesitamos copiarlos -  //en el objeto -  //Obtener la información sobre el objeto fuente -       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess) -       $vlDataType:=Type($vpSrcObject->) -       Case of -  //El objeto fuente es un campo o una variable tipo imagen -          :($vlDataType=Is picture) -  //¿El objeto fuente es del mismo proceso (de la misma ventana y formulario)? -             If($lSrcProcess=Current process) -  //Si es así, copiar el valor fuente -                [aTable]aPicture:=$vpSrcObject-> -             Else -  //Si no, ¿el objeto fuente es una variable? -                If(Is a variable($vpSrcObject)) -  //Si es así, obtener el valor del proceso fuente -                   GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject->;$vgDraggedPict) -                   [aTable]aPicture:=$vgDraggedPict -                Else -  //Si no, utilice CALL PROCESS para obtener el valor del campo del proceso fuente -                End if -             End if -  //El objeto fuente es un array de imágenes -          :($vlDataType=Picture array) -  //¿Está el objeto fuente en el mismo proceso (en la misma ventana y formulario)? -             If($lSrcProcess=Current process) -  //Si es así, copiar el valor fuente -                [aTable]aPicture:=$vpSrcObject->{$vlSrcElement} -             Else -  //Si no, obtener el valor del proceso fuente -                GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject->{$vlSrcElement};$vgDraggedPict) -                [aTable]aPicture:=$vgDraggedPict -             End if -       End case - End case -``` - -**Nota:** para más ejemplos sobre gestión de los eventos On Drag Over y On Drop, consulte los ejemplos del comando *\_o\_DRAG AND DROP PROPERTIES*. - -#### Ejemplo 4 - -Este ejemplo es una plantilla para un método de formulario. Muestra cada uno de los posibles eventos que pueden ocurrir cuando un informe utiliza un formulario como formulario de salida: - -```4d -  //Método de un formulario utilizado como formulario de salida de un informe - $vpFormTable:=Current form table - Case of -  //... -    :(Form event code=On Header) -  //Un área de encabezado está apunto de imprimirse -       Case of -          :(Before selection($vpFormTable->)) -  //El código para la primera ruptura de encabezado debe estar aquí -          :(Level=1) -  //El código para la ruptura de encabezado de nivel 1 debe estar aquí -          :(Level=2) -  //El código para la ruptura de encabezado de nivel 2 debe estar aquí -  //... -       End case -    :(Form event code=On Printing Detail) -  //Se va a imprimir un registro -  //El código para cada registro debe ir aquí -    :(Form event code=On Printing Break) -  //Un área de ruptura está a punto de imprimirse -       Case of -          :(Level=0) -  //El código para la ruptura 0 debe estar aquí -          :(Level=1) -  //El código para la ruptura 1 debe estar aquí -  //... -       End case -    :(Form event code=On Printing Footer) -       If(End selection($vpFormTable->)) -  //El código para el último pie de página va aquí -       Else -  //El código para el pie de página debe ir aquí -       End if - End case -``` - -#### Ejemplo 5 - -Este ejemplo muestra la plantilla de un método de formulario que administra los eventos que pueden ocurrir en un formulario mostrado utilizando los comandos [DISPLAY SELECTION](display-selection.md) o [MODIFY SELECTION](modify-selection.md). Por propósitos didácticos, muestra la naturaleza del evento en la barra de título de la ventana del formulario. - -```4d -  //Un método de formulario - Case of -    :(Form event code=On Load) -       $vsTheEvent:="El formulario va a ser visualizado" -    :(Form event code=On Unload) -       $vsTheEvent:="El formulario de salida ha sido cerrado y va a desaparecer de la pantalla" -    :(Form event code=On Display Detail) -       $vsTheEvent:=""Mostrando el registro#"+String(Selected record number([TheTable]) -    :(Form event code=On Menu Selected) -       $vsTheEvent:="Un comando de menú ha sido seleccionado" -    :(Form event code=On Header") -       $vsTheEvent:="El área de encabezado está a punto de ser dibujada" -    :(Form event code=On Clicked") -       $vsTheEvent:="Se ha hecho clic en un registro" -    :(Form event code=On Double Clicked") -       $vsTheEvent:="Se ha hecho doble clic en un registro" -    :(Form event code=On Open Detail) -       $vsTheEvent:="Al registro #"+String(Selected record number([TheTable]))+" se le hizo doble clic" -    :(Form event code=On Close Detail) -       $vsTheEvent:="Regreso al formulario de salida" -    :(Form event code=On Activate) -       $vsTheEvent:="La ventana de formulario pasa al primer plano" -    :(Form event code=On Deactivate) -       $vsTheEvent:="La ventana del formulario ya no es más la ventana del primer plano" -    :(Form event code=On Menu Selected) -       $vsTheEvent:="Se ha seleccionado un elemento del menú" -    :(Form event code=On Outside Call) -       $vsTheEvent:="Se ha recibido otra llamada" -    Else -       $vsTheEvent:="¿Qué pasa? El evento #"+String(Form event) - End case - SET WINDOW TITLE($vsTheEvent) -``` - -#### Ejemplo 6 - -Para los ejemplos sobre gestión de los eventos On Before Keystroke y On After Keystroke, ver los ejemplos de los comandos [Get edited text](get-edited-text.md), [Keystroke](keystroke.md) y [FILTER KEYSTROKE](filter-keystroke.md). - -#### Ejemplo 7 - -Este ejemplo muestra cómo tratar de la misma forma los clics y doble clic en un área de desplazamiento: - -```4d -  //Método de objeto para el área de desplazamiento asChoices - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asChoices;...) -  //... -       asChoices:=0 -    :((Form event code=On Clicked)|(Form event code=On Double Clicked)) -       If(asChoices#0) -  //Se ha hecho clic en un elemento, hacer algo aquí -  //... -       End if -  //... - End case -``` - -#### Ejemplo 8 - -Este ejemplo muestra cómo tratar los clics y doble clics utilizando una respuesta diferente. Note el uso del elemento cero para conservar el valor del elemento seleccionado: - -```4d -  //Método de objeto para el área de desplazamiento asChoices - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asChoices;...) -  // ... -       asChoices:=0 -       asChoices{0}:="0" -    :(Form event code=On Clicked) -       If(asChoices#0) -          If(asChoices#Num(asChoices)) -  //Se ha hecho clic en un nuevo elemento, hacer algo aquí -  //... -  //Guardar el nuevo elemento seleccionado para la próxima vez -             asChoices{0}:=String(asChoices) -          End if -       Else -          asChoices:=Num(asChoices{0}) -       End if -    :(Form event code=On Double Clicked) -       If(asChoices#0) -  //Se ha hecho doble clic sobre un elemento, hacer algo diferente aquí -       End if -  // ... - End case -``` - -#### Ejemplo 9 - -Este ejemplo muestra cómo mantener un área de texto a partir de un método desde un método de formulario, utilizando los eventos On Getting Focus y On Losing Focus: - -```4d -  // [Contacts];Método de formulario "Data Entry" - Case of -    :(Form event code=On Load) -       var vtStatusArea : Text -       vtStatusArea:="" -    :(Form event code=On Getting Focus) -       RESOLVE POINTER(Focus object;$vsVarName;$vlTableNum;$vlFieldNum) -       If(($vlTableNum#0)&($vlFieldNum#0)) -          Case of -             :($vlFieldNum=1) //Campo nombre -                vtStatusArea:="Introduzca el nombre del contacto; se pasará automáticamente a mayúsculas" -  //... -             :($vlFieldNum=10) //Zip Code field -                vtStatusArea:="Introduzca un código postal; será verificado y validado automáticamente" -  //... -          End case -       End if -    :(Form event code=On Losing Focus) -       vtStatusArea:="" -  //... - End case -``` - - -#### Ejemplo 10 - -Este ejemplo muestra cómo responder al evento de cierre de una ventana con un formulario utilizado para la entrada de datos: - -```4d -  // Método para un formulario de entrada - $vpFormTable:=Current form table - Case of -  //... -    :(Form event code=On Close Box) -       If(Modified record($vpFormTable->)) -          CONFIRM("Este registro ha sido modificado. ¿Quiere guardar los cambios?") -          If(OK=1) -             ACCEPT -          Else -             CANCEL -          End if -       Else -          CANCEL -       End if -  //... - End case -``` - -#### Ejemplo 11 - -Este ejemplo muestra cómo pasar a mayúsculas un campo de tipo texto o alfanumérico cada vez que el valor se modifique: - -```4d -  //Método de objeto [Contacts]First Name - Case of -  //... -    :(Form event code=On Data Change) -       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+Lowercase(Substring([Contacts]First Name;2)) -  //... - End case -``` - -#### Ejemplo 12 - -Este ejemplo muestra cómo pasar a mayúsculas un campo de tipo texto o alfanumérico cada vez que el valor se modifique: - -```4d -  //Método de objeto [Contacts]First Name - Case of -  //... -    :(Form event code=On Data Change) -       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+Lowercase(Substring([Contacts]First Name;2)) -  //... - End case -``` - -#### Ejemplo 13 - -El siguiente ejemplo ilustra cómo manejar una acción de eliminación en una lista jerárquica: - -```4d - ... //método de la lista jerárquica -:(Form event code=On Delete Action) - ARRAY LONGINT($itemsArray;0) - $Ref:=Selected list items(<>HL;$itemsArray;*) - $n:=Size of array($itemsArray) -  - Case of -    :($n=0) -       ALERT("Ningún elemento seleccionado") -       OK:=0 -    :($n=1) -       CONFIRM("¿Quiere eliminar este elemento?") -    :($n>1) -       CONFIRM("¿Quiere eliminar estos elementos?") - End case -  - If(OK=1) -    For($i;1;$n) -       DELETE FROM LIST(<>HL;$itemsArray{$i};*) -    End for - End if -``` - -#### Ejemplo 14 - -En este ejemplo, el evento formulario On Scroll permite sincronizar la visualización de dos imágenes en un formulario. El siguiente código se añade en el método del objeto "satélite" (campo imagen o variable image): - -```4d - Case of -    :(Form event code=On Scroll) -  // tomamos la posición de la imagen de la izquierda -       OBJECT GET SCROLL POSITION(*;"satellite";vPos;hPos) -  // y la aplicamos a la imagen de la derecha -       OBJECT SET SCROLL POSITION(*;"plan";vPos;hPos;*) - End case -``` - -Resultado: - -#### Ejemplo 15 - -Usted desea dibujar un rectángulo rojo alrededor de la celda seleccionada de un list box y desea que el rectángulo se mueva junto con el list box si es desplazado verticalmente por el usuario. En el método objeto del list box, puede escribir: - -```4d - Case of -  -    :(Form event code=On Clicked) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT SET VISIBLE(*;"RedRect";True) //inicializa un rectángulo rojo -       OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -  -    :(Form event code=On Scroll) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT GET COORDINATES(*;"LB1";$xlb1;$ylb1;$xlb2;$ylb2) -       $toAdd:=LISTBOX Get headers height(*;"LB1") //tener en cuenta la altura del encabezado para que no lo sobrepase -       If($ylb1+$toAdd<$y1)&($ylb2>$y2) //si estamos dentro del list box -  //para simplificar, sólo manejamos encabezados -  //pero debemos manejar clipping horizontal -  //así como también las barras de desplazamiento -          OBJECT SET VISIBLE(*;"RedRect";True) -          OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -       Else -          OBJECT SET VISIBLE(*;"RedRect";False) -       End if -  - End case -``` - -Como resultado, el rectángulo rojo sigue el desplazamiento del list box: - -![](../assets/en/commands/pict1900395.en.png) - -#### Ver también - -[CALL SUBFORM CONTAINER](call-subform-container.md) -[Current form table](current-form-table.md) -[FILTER KEYSTROKE](filter-keystroke.md) -[FORM Event](form-event.md) -[Get edited text](get-edited-text.md) -[Keystroke](keystroke.md) -[POST OUTSIDE CALL](post-outside-call.md) -[SET TIMER](set-timer.md) - -#### Propiedades - -| | | -| --- | --- | -| Número de comando | 388 | -| Hilo seguro | ✗ | - - diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md deleted file mode 100644 index 3778d1555decbb..00000000000000 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -id: form-event -title: FORM Event -slug: /commands/form-event -displayed_sidebar: docs ---- - -**FORM Event** : Object - -| Parámetro | Tipo | | Descripción | -| --- | --- | --- | --- | -| Resultado | Object | ← | Objeto evento | - - - -#### Descripción - -**FORM Event** devuelve un objeto que contiene información sobre el evento de formulario que acaba de ocurrir. Por lo general, usará **FORM Event** desde un formulario o método de objeto. - -**Objeto devuelto** - -Cada objeto devuelto incluye las siguientes propiedades principales: - -| **Propiedad** | **Tipo** | **Descripción** | -| ------------- | ------------ | ---------------------------------------------------------------------------------------------------------- | -| objectName | texto | Nombre del objeto que desencadena el evento: no se incluye si el evento es desencadenado por el formulario | -| code | entero largo | Valor numérico del evento de formulario. Ver [Form event code](../commands/form-event-code.md) | -| description | texto | Nombre del evento del formulario (por ejemplo, "On After Edit"). | - -Por ejemplo, en el caso de hacer clic en un botón, el objeto contiene las siguientes propiedades: - -```json -{"code":4,"description":"On Clicked","objectName":"Button2"} -``` - -El objeto evento puede contener propiedades adicionales, dependiendo del objeto para el cual ocurre el evento. Por ejemplo, los objetos *eventObj* generados en: - -* objetos list box o columnas, ver la *documentación de list box en developer.4d.com*. -* áreas 4D View Pro, ver *Evento formulario On VP Ready*. - -**Nota:** si no hay un evento actual, **FORM Event** devuelve un objeto nulo. - -#### Ejemplo 1 - -Desea manejar el evento On Clicked en un botón: - -```4d - If(FORM Event.code=On Clicked) -    ... - End if -``` - -#### Ejemplo 2 - -Si establece el nombre del objeto columna con un nombre de atributo real de una clase de datos como esta: - -![](../assets/en/commands/pict4843820.en.png) - -Puede ordenar la columna utilizando el evento On Header Click: - -```4d - Form.event:=FORM Event - Case of -    :(Form event code=On Header Click) -       if(Form.event.columnName="lastname") -          Form.employees:=Form.employees.orderBy(Form.event.columnName+", firstname") -       End if - End case -``` - -#### Ejemplo 3 - -Desea manejar On Display Details en un objeto list box con un método definido en la propiedad *Meta info expression*: - -![](../assets/en/commands/pict4843812.en.png) - -El método *setColor*: - -```4d - var $event;$0;$meta : Object - $event:=[#current_title_incod] - $meta:=New object -  - Case of -    :($event.code=On Display Detail) -       If($event.isRowSelected) -          $meta.fill:="lightblue" -       End if - End case - $0:=$meta -``` - -El list box resultante cuando se seleccionan las líneas: - -![](../assets/en/commands/pict4843808.en.png) - -#### Ver también - -[Form event code](../commands/form-event-code.md) - -#### Propiedades - -| | | -| --- | --- | -| Número de comando | 1606 | -| Hilo seguro | ✓ | - - diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md deleted file mode 100644 index d7410d749732a9..00000000000000 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nombre* {; *} ) : Integer - -| Parámetro | Tipo | | Descripción | -| --- | --- | --- | --- | -| nombre | Text | → | Nombre del proceso del cual recuperar el número | -| * | Operator | → | Devolver el número del proceso servidor | -| Resultado | Integer | ← | Número de proceso | - - - -#### Descripción - -Process number devuelve el número del proceso cuyo nombre se pasa en *nom*. Si no se encuentra ningún proceso, Process number devuelve 0. - -El parámetro opcional *\** le permite recuperar, a partir de 4D Client, el número de un proceso que se está ejecutando en el servidor (un procedimiento almacenado). En este caso, el valor devuelto es negativo. Esta opción es particularmente útil cuando se utilizan los comandos [GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE") y [SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE"). Para mayor información, consulte las descripciones de estos comandos. - -Si el comando se ejecuta con el parámetro *\** desde un proceso en el equipo servidor, el valor devuelto es positivo. - -#### Ejemplo - -Usted crea una paleta flotante, que corre en un proceso separado, en el cual usted implementa sus propias herramientas para interactuar con el entorno Diseño. Por ejemplo, cuando selecciona un elemento en una lista jerárquica de palabras claves, usted quiere pegar algún texto en la ventana del primer plano del entorno Diseño. Para hacerlo, puede utilizar el Portapapeles, pero el evento de pegado debe ocurrir dentro del proceso Diseño. La siguiente función devuelve el número del proceso del proceso Diseño (si está activo): - -```4d -  // Método de proyecto Numero proceso Diseño -  // Numero proceso Diseño -> Entero largo -  // Numero proceso Diseño -> Número del proceso de Diseño -  - $0:=Process number("Proceso Diseño") -  // Nota: Esto puede no funcionar en el futuro si la fuente cambia -``` - -Con esta función, el método de proyecto listado pega el texto recibido como parámetro en la ventana del primer plano en el entorno Diseño (si aplica): - -```4d -  // Método de proyecto PEGAR TEXTO EN DISEÑO -  // PEGAR TEXTO EN DISEÑO ( Text ) -  //PEGAR TEXTO EN DISEÑO (Texto a pegar en la ventana de Diseño del primer plano) -  - var $1 : Text - var $vlDiseñoPID;$vlCont : Integer -  - $vlDiseñoPID:=Numero proceso Diseño - If($vlDiseñoPID #0) -  // Coloque el texto en el portapapeles -    SET TEXT TO PASTEBOARD($1) -  // Generar un evento Ctrl-V / Comando-V -    POST KEY(ASCII("v");Command key mask;$vlDiseñoPID) -  // Llamar repetitivamente DELAY PROCESS para que el minutero puede pasar -  // sobre el evento al proceso Diseño -    For($vlCont;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Ver también - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propiedades - -| | | -| --- | --- | -| Número de comando | 372 | -| Hilo seguro | ✓ | - - diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md deleted file mode 100644 index d7410d749732a9..00000000000000 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nombre* {; *} ) : Integer - -| Parámetro | Tipo | | Descripción | -| --- | --- | --- | --- | -| nombre | Text | → | Nombre del proceso del cual recuperar el número | -| * | Operator | → | Devolver el número del proceso servidor | -| Resultado | Integer | ← | Número de proceso | - - - -#### Descripción - -Process number devuelve el número del proceso cuyo nombre se pasa en *nom*. Si no se encuentra ningún proceso, Process number devuelve 0. - -El parámetro opcional *\** le permite recuperar, a partir de 4D Client, el número de un proceso que se está ejecutando en el servidor (un procedimiento almacenado). En este caso, el valor devuelto es negativo. Esta opción es particularmente útil cuando se utilizan los comandos [GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE") y [SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE"). Para mayor información, consulte las descripciones de estos comandos. - -Si el comando se ejecuta con el parámetro *\** desde un proceso en el equipo servidor, el valor devuelto es positivo. - -#### Ejemplo - -Usted crea una paleta flotante, que corre en un proceso separado, en el cual usted implementa sus propias herramientas para interactuar con el entorno Diseño. Por ejemplo, cuando selecciona un elemento en una lista jerárquica de palabras claves, usted quiere pegar algún texto en la ventana del primer plano del entorno Diseño. Para hacerlo, puede utilizar el Portapapeles, pero el evento de pegado debe ocurrir dentro del proceso Diseño. La siguiente función devuelve el número del proceso del proceso Diseño (si está activo): - -```4d -  // Método de proyecto Numero proceso Diseño -  // Numero proceso Diseño -> Entero largo -  // Numero proceso Diseño -> Número del proceso de Diseño -  - $0:=Process number("Proceso Diseño") -  // Nota: Esto puede no funcionar en el futuro si la fuente cambia -``` - -Con esta función, el método de proyecto listado pega el texto recibido como parámetro en la ventana del primer plano en el entorno Diseño (si aplica): - -```4d -  // Método de proyecto PEGAR TEXTO EN DISEÑO -  // PEGAR TEXTO EN DISEÑO ( Text ) -  //PEGAR TEXTO EN DISEÑO (Texto a pegar en la ventana de Diseño del primer plano) -  - var $1 : Text - var $vlDiseñoPID;$vlCont : Integer -  - $vlDiseñoPID:=Numero proceso Diseño - If($vlDiseñoPID #0) -  // Coloque el texto en el portapapeles -    SET TEXT TO PASTEBOARD($1) -  // Generar un evento Ctrl-V / Comando-V -    POST KEY(ASCII("v");Command key mask;$vlDiseñoPID) -  // Llamar repetitivamente DELAY PROCESS para que el minutero puede pasar -  // sobre el evento al proceso Diseño -    For($vlCont;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Ver también - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propiedades - -| | | -| --- | --- | -| Número de comando | 372 | -| Hilo seguro | ✓ | - - diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md deleted file mode 100644 index e17a5b4588b8ad..00000000000000 --- a/i18n/fr/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nom* {; *} ) : Integer - -| Paramètre | Type | | Description | -| --- | --- | --- | --- | -| nom | Text | → | Nom du process duquel récupérer le numéro | -| * | Operator | → | Retourner le numéro du process serveur | -| Résultat | Integer | ← | Numéro du process | - - - -#### Description - -La commande **Process number** retourne le numéro du process dont vous passez le nom dans *nomProcess*. Si aucun process n'est trouvé, **Process number** retourne 0. - -Le paramètre optionnel *\** vous permet, à partir de 4D Client, de récupérer le numéro d'un process s'exécutant sur le serveur, c'est-à-dire une procédure stockée. Dans ce cas, la valeur retournée est négative. Cette option est particulièrement utile dans le cadre de l'utilisation des commandes [GET PROCESS VARIABLE](get-process-variable.md), [SET PROCESS VARIABLE](set-process-variable.md) et [VARIABLE TO VARIABLE](variable-to-variable.md). Pour plus d'informations, reportez-vous à la description de ces commandes. -Si la commande est exécutée avec le paramètre *\** à partir d'un process tournant sur le poste serveur, la valeur retournée est positive. - -#### Exemple - -Vous créez une palette flottante, fonctionnant dans un process séparé, dans lequel vous implémentez vos propres outils pour interagir avec l'environnement Développement. Par exemple, quand vous sélectionnez un élément dans une liste hérarchique de mots-clés, vous voulez coller du texte dans la fenêtre de premier plan du mode Développement. Pour cela, vous pouvez utiliser le presse-papiers, mais l'événement de collage doit se passer dans le process Développement. La petite fonction qui suit retourne le numéro du process de Développement (s'il est actif) : - -```4d -  // Méthode projet Numéro process Développement -  // Numéro process Développement -> Entier long -  // Numéro process Développement -> Numéro du process de Développement -  - $0:=Process number("Process Développement") -  // Note: ceci peut ne pas fonctionner si le nom du process est modifié dans l'avenir -``` - -Avec cette fonction, la méthode projet listée ci-dessous colle le texte reçu en paramètre dans la fenêtre de premier plan du mode Développement (si c'est possible) : - -```4d -  // Méthode projet COLLER TEXTE EN STRUCTURE -  // COLLER TEXTE EN STRUCTURE ( Texte) -  // COLLER TEXTE EN STRUCTURE ( Texte à coller dans la fenêtre de Structure de premier plan ) -  - var $1 : Text - var $vlStructurePID;$vlCompte : Integer -  - $vlStructurePID:=Numero process Développement - If($vlStructurePID #0) -  // Mettre le texte dans le presse-papiers -    SET TEXT TO PASTEBOARD($1) -  // Générer un événement Ctrl-V / Command-V -    POST KEY(Character code("v");Command key mask;$vlStructurePID) -  // Appeler répétitivement ENDORMIR PROCESS pour que le minuteur puisse passer -  // l'événement au process Développement -    For($vlCompte;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Voir aussi - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propriétés - -| | | -| --- | --- | -| Numéro de commande | 372 | -| Thread safe | ✓ | - - diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md deleted file mode 100644 index d202f2b9ae1d91..00000000000000 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md +++ /dev/null @@ -1,835 +0,0 @@ ---- -id: form-event-code -title: Form event code -slug: /commands/form-event-code -displayed_sidebar: docs ---- - -**Form event code** : Integer - -| Paramètre | Type | | Description | -| --- | --- | --- | --- | -| Résultat | Integer | ← | Numéro d'événement formulaire | - - - -#### Compatibilité - -La commande **Form event code** était nommée **Evenement formulaire** dans les versions précédentes de 4D. Elle a été renommée pour plus de clarté, depuis l'ajout de la commande [FORM Event](form-event.md) qui retourne un objet. - -#### Description - -**Form event code** retourne une valeur numérique qui identifie le type d'événement formulaire qui vient de se produire. Généralement, **Form event code** s'utilise dans une méthode formulaire ou une méthode objet. - -4D fournit des constantes prédéfinies (placées dans le thème *Evénements formulaire*) permettant de comparer les valeurs retournées par la commande **Form event code**. Certains événements sont génériques (générés pour tout type d'objet), d'autres sont spécifiques à un type d'objet particulier. - -| Constante | Type | Valeur | Comment | -| ------------------------ | ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| On Load | Entier long | 1 | Le formulaire s'affiche ou s'imprime | -| On Mouse Up | Entier long | 2 | (*Images uniquement*) L'utilisateur vient de relâcher le bouton de la souris dans un objet Image | -| On Validate | Entier long | 3 | La saisie des données dans l'enregistrement est validée | -| On Clicked | Entier long | 4 | Un clic est survenu sur un objet | -| On Header | Entier long | 5 | L'en-tête du formulaire va être imprimé ou affiché | -| On Printing Break | Entier long | 6 | Une rupture du formulaire va être imprimée | -| On Printing Footer | Entier long | 7 | Le pied de page du formulaire va être imprimé | -| On Display Detail | Entier long | 8 | Un enregistrement va être affiché dans la liste ou une ligne va être affichée dans la list box | -| On VP Ready | Entier long | 9 | (*Zones 4D View Pro uniquement*) Le chargement de la zone 4D View Pro est terminé | -| On Outside Call | Entier long | 10 | Le formulaire a reçu un appel de la commande [POST OUTSIDE CALL](post-outside-call.md) | -| On Activate | Entier long | 11 | La fenêtre du formulaire passe au premier plan | -| On Deactivate | Entier long | 12 | La fenêtre du formulaire passe en arrière-plan | -| On Double Clicked | Entier long | 13 | Un double-clic est survenu sur un objet | -| On Losing Focus | Entier long | 14 | Un objet de formulaire perd le focus | -| On Getting Focus | Entier long | 15 | Un objet de formulaire prend le focus | -| On Drop | Entier long | 16 | Des données sont déposées sur un objet | -| On Before Keystroke | Entier long | 17 | Un caractère vient d'être saisi dans l'objet qui a le focus. [Get edited text](get-edited-text.md) retourne le contenu sans ce caractère | -| On Menu Selected | Entier long | 18 | Une commande de menu a été sélectionnée | -| On Plug in Area | Entier long | 19 | Un plug-in demande que sa méthode objet soit exécutée | -| On Data Change | Entier long | 20 | Les données d'un objet ont été modifiées | -| On Drag Over | Entier long | 21 | Des données sont glissées sur un objet | -| On Close Box | Entier long | 22 | On a cliqué sur la case de fermeture de la fenêtre | -| On Printing Detail | Entier long | 23 | Le corps du formulaire va être imprimé | -| On Unload | Entier long | 24 | Le formulaire se referme et est déchargé | -| On Open Detail | Entier long | 25 | Le formulaire détaillé associé au formulaire sortie ou à la listbox est sur le point d'être ouvert | -| On Close Detail | Entier long | 26 | Le formulaire détaillé se referme et on retourne au formulaire sortie | -| On Timer | Entier long | 27 | Le nombre de ticks défini par [SET TIMER](set-timer.md) est atteint | -| On After Keystroke | Entier long | 28 | Un caractère vient d'être saisi dans l'objet qui a le focus. [Get edited text](get-edited-text.md) retourne le contenu avec ce caractère. | -| On Resize | Entier long | 29 | La fenêtre du formulaire est redimensionnée | -| On After Sort | Entier long | 30 | (*List box uniquement*) Un tri standard vient d'être effectué dans une colonne de list box | -| On Selection Change | Entier long | 31 | *List box* *et 4D View Pro* : la sélection courante de lignes ou de colonnes est modifiée *Enregistrements en liste* : l’enregistrement courant ou la sélection courante de lignes est modifié(e) dans un formulaire en liste ou un sous-formulaire *Liste hiérarchique* : la sélection dans la liste est modifiée à la suite d’un clic ou de la frappe d’une touche au clavier *Variable ou champ saisissable* : la sélection de texte ou la position du curseur dans la zone est modifiée à la suite d’un clic ou de la frappe d’une touche au clavier | -| On Column Moved | Entier long | 32 | (*List box uniquement*) Une colonne de list box est déplacée par l’utilisateur via le glisser-déposer | -| On Column Resize | Entier long | 33 | (*List box* *et 4D View Pro*) La largeur d’une colonne de list box est modifiée par l’utilisateur via la souris | -| On Row Moved | Entier long | 34 | (*List box uniquement*) Une ligne de list box est déplacée par l’utilisateur via le glisser-déposer | -| On Mouse Enter | Entier long | 35 | Le curseur de la souris entre dans la zone graphique d’un objet | -| On Mouse Leave | Entier long | 36 | Le curseur de la souris sort de la zone graphique d’un objet | -| On Mouse Move | Entier long | 37 | Le curseur de la souris a bougé d’au moins un pixel OU une touche de modification (Ctrl, Alt, Verr Maj.) a été enfoncée. Si l'événement est coché pour un objet uniquement, il n'est généré que lorsque le curseur se trouve dans la zone graphique de l'objet | -| On Alternative Click | Entier long | 38 | *Boutons 3D* : La zone “flèche” d'un bouton 3D reçoit un clic*List box* : Dans une colonne tableau d'objets, un bouton d'ellipse (attribut "alternateButton") reçoit un clic
**Note**: Les boutons d'ellipses sont disponibles à partir de la v15 uniquement. | -| On Long Click | Entier long | 39 | (*Boutons 3D uniquement*) Un bouton 3D reçoit un clic et le bouton de la souris reste enfoncé pendant un certain laps de temps | -| On Load Record | Entier long | 40 | En mode saisie en liste, un enregistrement est chargé en modification (l’utilisateur a cliqué sur la ligne de l’enregistrement et un champ passe en édition) | -| On Before Data Entry | Entier long | 41 | (*List box uniquement*) Une cellule de list box est sur le point de passer en mode édition | -| On Header Click | Entier long | 42 | (*List box* *et 4D View Pro*) Un clic est survenu dans l’en-tête d’une colonne de list box | -| On Expand | Entier long | 43 | (*Listes hiérarchiques et List box hiérarchiques*) Un élément de liste hiérarchique ou de list box hiérarchique a été déployé via un clic ou une touche du clavier | -| On Collapse | Entier long | 44 | (*Listes hiérarchiques et list box hiérarchiques*) Un élément de liste hiérarchique ou de list box hiérarchique a été contracté via un clic ou une touche du clavier | -| On After Edit | Entier long | 45 | Le contenu de l'objet saisissable qui a le focus vient d'être modifié | -| On Begin Drag Over | Entier long | 46 | Un objet est en cours de glisser | -| On Begin URL Loading | Entier long | 47 | (*Zones Web uniquement*) Un nouvel URL est chargé dans la zone Web | -| On URL Resource Loading | Entier long | 48 | (*Zones Web uniquement*) Une nouvelle ressource est chargée dans la zone Web | -| On End URL Loading | Entier long | 49 | (*Zones Web uniquement*) Toutes les ressources de l'URL ont été chargées | -| On URL Loading Error | Entier long | 50 | (*Zones Web uniquement*) Une erreur s'est produite durant le chargement de l'URL | -| On URL Filtering | Entier long | 51 | (*Zones Web uniquement*) Un URL a été bloqué par la zone Web | -| On Open External Link | Entier long | 52 | (*Zones Web uniquement*) Un URL externe a été ouvert dans le navigateur | -| On Window Opening Denied | Entier long | 53 | (*Zones Web uniquement*) Une fenêtre pop up a été bloquée | -| On bound variable change | Entier long | 54 | La variable liée à un sous-formulaire est modifiée. | -| On Page Change | Entier long | 56 | On a changé de page courante dans le formulaire | -| On Footer Click | Entier long | 57 | (*List box uniquement*) Un clic est survenu dans le pied d’une list box ou d’une colonne de list box | -| On Delete Action | Entier long | 58 | (*Listes hiérarchiques et List box*) L’utilisateur a demandé à supprimer un élément | -| On Scroll | Entier long | 59 | *Variables ou champs image et List Box* : L'utilisateur fait défiler le contenu du champ image, de la variable image ou de la list box à l'aide de la souris ou d'une touche du clavier. | -| On Row Resize | Entier long | 60 | *(4D View Pro uniquement)* La hauteur d'une ligne est modifiée par l'utilisateur avec la souris | -| On VP Range Changed | Entier long | 61 | La plage de cellules 4D View Pro a été modifiée (ex: calcul de formule, valeur supprimée d'une cellule, etc.) | - -**Note :** Les événements spécifiques des formulaires de sortie ne peuvent pas être utilisés avec les **formulaires projet**. Il s'agit de : Sur affichage corps, Sur ouverture corps, Sur fermeture corps, Sur chargement ligne, Sur entête, Sur impression corps, Sur impression sous total, Sur impression pied de page. - -#### Evénements et méthodes - -Lorsqu'un événement formulaire se produit, 4D effectue les actions suivantes : - -* En premier lieu, il examine chaque objet du formulaire et appelle la méthode de ceux dont la propriété d'événement correspondante a été sélectionnée et qui sont impliqués dans l'événement. -* Ensuite, il appelle la méthode formulaire si la propriété d'événement correspondante a été sélectionnée pour le formulaire. - -Les différentes méthodes objet ne sont pas appelées dans un ordre particulier. La règle est que les méthodes objet sont toujours appelées avant la méthode formulaire. Dans le cas des sous-formulaires, les méthodes objet du formulaire sortie du sous-formulaire sont d'abord appelées, puis la méthode formulaire du formulaire sortie, puis enfin 4D appelle les méthodes objet du formulaire parent. Autrement dit, lorsqu'un objet est un sous-formulaire, 4D utilise la même règle pour les méthodes formulaire et objet dans le sous-formulaire. - -Lorsque, pour un événement particulier, la propriété d'événement du formulaire n'est pas sélectionnée, cela n'empêche pas les appels aux méthodes des objets pour lesquels l'événement est sélectionné. Autrement dit, la sélection ou la désélection d'un événement au niveau du formulaire n'a pas d'effet sur les propriétés d'événements des objets. - -**ATTENTION :** Ce principe ne s'applique pas aux événements On Load et On Unload. Ces événements ne seront générés pour un objet que si les propriétés d'événement correspondantes ont été sélectionnées à la fois pour l'objet et pour le formulaire auquel il appartient. Si les propriétés sont sélectionnées pour l'objet uniquement, les événements ne seront pas générés ; ces deux événements doivent être sélectionnés au niveau du formulaire. - -Le nombre d'objets impliqués par un événement dépend de la nature de l'événement. En particulier : - -* Pour l'événement On Load, les méthodes objet de tous les objets du formulaire (sur toutes les pages) pour lequels la propriété d'événement On Load est sélectionnée seront appelées. Si l'événement On Load est sélectionné pour le formulaire, la méthode formulaire sera appelée. -* Pour les événements On Activate ou On Resize, aucune méthode objet ne sera appelée car ces événements s'appliquent au formulaire, pas à un objet en particulier. Par conséquent, si ces événements sont sélectionnés pour le formulaire, seule la méthode formulaire sera appelée. -* L'événement On Timer n'est généré que si la méthode formulaire contient un appel préalable à la commande [SET TIMER](set-timer.md). Seule la méthode formulaire reçoit cet événement, aucune méthode objet ne sera appelée. -* Pour l'événement On Drag Over, seule la méthode de l'objet déposable impliqué par l'événement sera appelée (si la propriété d'événement "Déposable" est sélectionnée pour l'objet). La méthode formulaire ne sera pas appelée. -* A l'inverse, pour l'événement On Begin Drag Over, la méthode objet ou la méthode formulaire de l'objet glissé sera appelée (si la propriété d'événement "Glissable" est sélectionnée pour l'objet). - -**ATTENTION :** Contrairement aux autres événements, pendant un événement On Begin Drag Over, la méthode appelée est exécutée dans le contexte du process de l'objet source du glisser-déposer, et non dans celui du process de l'objet de destination. Pour plus d'informations, reportez-vous à la section *Présentation du Glisser-Déposer*. - -* Si les événements On Mouse Enter, On Mouse Move et On Mouse Leave sont cochés pour le formulaire, ils sont générés pour chaque objet du formulaire. S’ils sont cochés pour un objet, ils sont générés pour cet objet uniquement. En cas de superposition d’objets, l’événement est généré par le premier objet capable de le gérer dans l’ordre des plans du haut vers le bas. Les objets rendus invisibles par la commande [OBJECT SET VISIBLE](object-set-visible.md) ne génèrent pas ces événements. Pendant la saisie d’un objet, les autres objets peuvent recevoir les événements de survol en fonction de la position de la souris. -A noter que l'événement On Mouse Move est généré lorsque le curseur de la souris est déplacé mais également lorsque l'utilisateur appuie sur une touche de modification telle que **Maj**, **Verr. Maj**, **Ctrl** ou **Option** (ce principe permet notamment de gérer les glisser-déposer de type copie ou déplacement). -* Enregistrements en liste : l’enchaînement d’appels des méthodes et des événements formulaires dans les formulaires liste affichés via [MODIFY SELECTION](modify-selection.md) / [DISPLAY SELECTION](display-selection.md) et les sous-formulaires est le suivant : - -| Pour chaque objet de la zone d’en-tête : | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Méthode objet avec événement Sur entêteMéthode formulaire avec événement Sur entêtePour chaque enregistrement :Pour chaque objet de la zone de corps :Méthode objet avec événement Sur affichage corpsMéthode formulaire avec événement Sur affichage corps | -* L’appel depuis les événements On Display Detail et On Header d’une commande 4D provoquant l’affichage d’une boîte de dialogue est interdit et provoque une erreur de syntaxe. Les commandes concernées sont notamment : [ALERT](alert.md), [DIALOG](dialog.md), [CONFIRM](confirm.md), [Request](request.md), [ADD RECORD](add-record.md), [MODIFY RECORD](modify-record.md), [DISPLAY SELECTION](display-selection.md) et [MODIFY SELECTION](modify-selection.md). -* On Page Change : cet événement est disponible au niveau des formulaires uniquement (il est appelé dans la méthode formulaire). Il est généré à chaque changement de page courante du formulaire (à la suite d’un appel à la commande [FORM GOTO PAGE](form-goto-page.md) ou d’une action standard de navigation). A noter que l’événement est généré après le chargement complet de la page, c’est-à-dire une fois que tous les objets qu’elle contient sont initialisés (y compris les zones Web). Cet événement est utile pour exécuter du code qui nécessite que tous les objets soient initialisés au préalable. Il permet également d’optimiser l’application en n’exécutant du code (par exemple une recherche) qu’après l’affichage d’une page spécifique du formulaire et non dès le chargement de la page 1\. Si l’utilisateur n’accède pas à la page, le code n’est pas exécuté. - -Le tableau suivant résume, pour chaque type d'événement, l'appel des méthodes formulaire et objet : - -| **Evénement** | **Méthode(s) objet** | **Méthode formulaire** | **Quel(s) objet(s)** | -| ------------------------ | -------------------------------------- | ---------------------- | --------------------- | -| On Load | Oui | Oui | Tous | -| On Unload | Oui | Oui | Tous | -| On Validate | Oui | Oui | Tous | -| On Clicked | Oui (si cliquable ou saisissable) (\*) | Oui | Seul l'objet impliqué | -| On Double Clicked | Oui (si cliquable ou saisissable) (\*) | Oui | Seul l'objet impliqué | -| On Before Keystroke | Oui (si saisissable) (\*) | Oui | Seul l'objet impliqué | -| On After Keystroke | Oui (si saisissable) (\*) | Oui | Seul l'objet impliqué | -| On After Edit | Oui (si saisissable) (\*) | Oui | Seul l'objet impliqué | -| On Getting Focus | Oui (si tabulable) (\*) | Oui | Seul l'objet impliqué | -| On Losing Focus | Oui (si tabulable) (\*) | Oui | Seul l'objet impliqué | -| On Activate | Jamais | Oui | Aucun | -| On Deactivate | Jamais | Oui | Aucun | -| On Outside Call | Jamais | Oui | Aucun | -| On Page Change | Jamais | Oui | Aucun | -| On Begin Drag Over | Oui (si glissable) (\*\*) | Oui | Seul l'objet impliqué | -| On Drop | Oui (si déposable) (\*\*) | Oui | Seul l'objet impliqué | -| On Drag Over | Oui (si déposable) (\*\*) | Jamais | Seul l'objet impliqué | -| On Mouse Enter | Oui | Oui | Tous | -| On Mouse Move | Oui | Oui | Tous | -| On Mouse Leave | Oui | Oui | Tous | -| On Mouse Up | Oui | Jamais | Seul l'objet impliqué | -| On Menu Selected | Jamais | Oui | Aucun | -| On Bound variable change | Jamais | Oui | Aucun | -| On Data Change | Oui (si modifiable) (\*) | Oui | Seul l'objet impliqué | -| On Plug in Area | Oui | Oui | Seul l'objet impliqué | -| On Header | Oui | Oui | Tous | -| On Printing Detail | Oui | Oui | Tous | -| On Printing Break | Oui | Oui | Tous | -| On Printing Footer | Oui | Oui | Tous | -| On Close Box | Jamais | Oui | Aucun | -| On Display Detail | Oui | Oui | Tous | -| On Open Detail | Non sauf List box | Oui | Aucun sauf List box | -| On Close Detail | Non sauf List box | Oui | Aucun sauf List box | -| On Resize | Jamais | Oui | Aucun | -| On Selection Change | Oui (\*\*\*) | Oui | Seul l'objet impliqué | -| On Load Record | Jamais | Oui | Aucun | -| On Timer | Jamais | Oui | Aucun | -| On Scroll | Oui | Jamais | Seul l'objet impliqué | -| On Before Data Entry | Oui (List box) | Jamais | Seul l'objet impliqué | -| On Column Moved | Oui (List box) | Jamais | Seul l'objet impliqué | -| On Row Moved | Oui (List box) | Jamais | Seul l'objet impliqué | -| On Column Resize | Oui (List box) | Jamais | Seul l'objet impliqué | -| On Header Click | Oui (List box) | Jamais | Seul l'objet impliqué | -| On Footer Click | Oui (List box) | Jamais | Seul l'objet impliqué | -| On After Sort | Oui (List box) | Jamais | Seul l'objet impliqué | -| On Long Click | Oui (Bouton 3D) | Oui | Seul l'objet impliqué | -| On Alternative Click | Oui (Bouton 3D et List box) | Jamais | Seul l'objet impliqué | -| On Expand | Oui (Liste hiér. et List box) | Jamais | Seul l'objet impliqué | -| On Collapse | Oui (Liste hiér. et List box) | Jamais | Seul l'objet impliqué | -| On Delete Action | Oui (Liste hiér. et List box) | Jamais | Seul l'objet impliqué | -| On URL Resource Loading | Oui (Zone Web) | Jamais | Seul l'objet impliqué | -| On Begin URL Loading | Oui (Zone Web) | Jamais | Seul l'objet impliqué | -| On URL Loading Error | Oui (Zone Web) | Jamais | Seul l'objet impliqué | -| On URL Filtering | Oui (Zone Web) | Jamais | Seul l'objet impliqué | -| On End URL Loading | Oui (Zone Web) | Jamais | Seul l'objet impliqué | -| On Open External Link | Oui (Zone Web) | Jamais | Seul l'objet impliqué | -| On Window Opening Denied | Oui (Zone Web) | Jamais | Seul l'objet impliqué | - -(\*) Référez-vous ci-dessous au paragraphe "Evénements, objets et propriétés" pour plus d'informations. -(\*\*) Référez-vous à la section *Présentation du Glisser-Déposer* pour plus d'informations. -(\*\*\*) Seuls les objets de type List box, Liste hiérarchique et Sous-formulaire prennent en charge cet événement. - -**IMPORTANT :** Gardez constamment à l'esprit que, pour chaque événement, la méthode d'un formulaire ou d'un objet est appelée si l'événement correspondant a été sélectionné pour le formulaire ou l'objet. L'avantage de désactiver des événements en mode Développement (en utilisant la Liste des propriétés de l'éditeur de formulaires) est que vous pouvez réduire de manière très importante le nombre d'appels aux méthodes et donc optimiser la vitesse d'exécution des formulaires. - -#### Evénements, objets et propriétés - -Une méthode objet est appelée si l'événement peut réellement se produire pour l'objet en fonction de sa nature et de ses propriétés. Ce paragraphe détaille les événements à utiliser pour gérer les différents types d'objets. -A noter que la Liste des propriétés de l'éditeur de formulaires n'affiche que les événements compatibles avec l'objet sélectionné ou le formulaire. - -##### Objets cliquables - -Les objets cliquables sont gérés principalement avec la souris. Ces objets sont les suivants : - -* Variables ou champs saisissables de type Booléen -* Boutons, boutons par défaut, boutons radio, cases à cocher, grilles de boutons -* Boutons 3D, boutons radio 3D, cases à cocher 3D -* Pop up menus, pop up menus hiérarchiques, menus Images -* Listes déroulantes, menus, -* Zones de défilement, listes hiérarchiques, list box et colonnes de list box -* Boutons invisibles, boutons inversés, boutons radio image -* Thermomètres, règles, cadrans -* Onglets, -* Séparateurs. - -Lorsque l’événement On Clicked ou On Double Clicked est sélectionné pour un de ces objets, vous pouvez détecter et gérer les clics sur l'objet à l'aide de la commande **Form event code** qui retourne On Clicked ou On Double Clicked selon le cas. -Si les deux événements sont sélectionnés pour un même objet, les événements On Clicked puis On Double Clicked seront générés en cas de double-clic sur l’objet. - -**Note :** A compter de 4D v14, les champs et variables saisissables contenant du texte (type texte, date, heure, numérique) génèrent également les événements On Clicked et On Double Clicked . - -Pour tous les objets cliquables, l'événement On Clicked se produit une fois que le bouton de la souris est relâché. Il y a cependant des exceptions : - -* Avec les boutons invisibles et les onglets, l'événement On Clicked se produit dès qu'un clic a été détecté — sans attendre le relâchement du bouton de la souris. -* Avec les thermomètres, règles et cadrans, si le format d'affichage indique que la méthode objet doit être appelée pendant que vous faites glisser les curseurs de contrôle, l'événement On Clicked survient dès que le clic est détecté. - -Dans le contexte de l'événement On Clicked, vous pouvez tester le nombre de clics effectués par l'utilisateur à l'aide de la commande [Clickcount](clickcount.md). - -**Note :** Quelques objets peuvent être activés par le clavier. Une case à cocher, par exemple, une fois qu'elle a le focus, peut être sélectionnée à l'aide de la barre d'espace. Dans ce cas, l'événement On Clicked est quand même généré. - -**ATTENTION :** Les combo-boxes ne sont pas considérées comme des objets cliquables. Une combo-box doit être perçue comme une zone de texte saisissable dont la liste déroulante fournit les valeurs par défaut. Par conséquent, vous gérez la saisie des données dans une combo-box à l'aide des événements On Before Keystroke, On After Keystroke et On Data Change. - -**Note :** A compter de 4D v13, les objets de type pop up/liste déroulante et menu déroulant hiérarchique peuvent générer l'événement On Data Change. Ce principe vous permet de détecter l'activation de l'objet avec sélection d'une valeur différente de la valeur courante. - -##### Objets saisissables par clavier - -Les objets saississables par clavier sont des objets dans lesquels vous saisissez des données par le clavier et pour lesquels vous pouvez filtrer les données au plus bas niveau en détectant les événements On After Edit, On Before Keystroke, On After Keystroke et On Selection Change. -Les objets et types de données saisissables sont les suivants : - -* Tous les champs saisissables de type alpha, texte, date, heure, numérique ou (On After Edit uniquement) image -* Toutes les variables saisissables de type alpha, texte, date, heure, numérique ou (On After Edit uniquement) image -* Combo-boxes (sauf On Selection Change) -* List boxes - -**Note :** A compter de 4D v14, les champs et variables saisissables contenant du texte (type texte, date, heure, numérique) génèrent également les événements On Clicked et On Double Clicked. - -**Note :** Bien qu'objets “saisissables”, les listes hiérarchiques ne gèrent pas les événements formulaire On After Edit, On Before Keystroke et On After Keystroke (voir aussi le paragraphe “Listes hiérarchiques” ci-dessous). - -* On Before Keystroke et On After Keystroke - -**Note :** L'événement On After Keystroke peut généralement être avantageusement remplacé par l'événement On After Edit (cf. ci-dessous). -Une fois que les événements On Before Keystroke et On After Keystroke ont été sélectionnés pour un objet, vous pouvez détecter et gérer la saisie par le clavier dans l'objet à l'aide de la commande **Form event code** qui va retourner On Before Keystroke puis On After Keystroke (pour plus d'informations, reportez-vous à la description de la commande [Get edited text](get-edited-text.md)). Ces événements sont également activés par les commandes du langage simulant une action utilisateur, telles que [POST KEY](post-key.md). -A noter que les modifications des utilisateurs non effectuées via le clavier (coller, glisser-déposer, etc.) ne sont pas prises en compte. Pour traiter ces événements, vous devez utiliser On After Edit. - -**Note :** Les événements On Before Keystroke et On After Keystroke ne sont pas générés lors de l'utilisation d'une méthode d'entrée. Une méthode d'entrée (ou IME, Input Method Editor) est un programme ou un composant système permettant la saisie de caractères complexes ou de symboles (par exemple japonais ou chinois) à l'aide d'un clavier occidental. - -* On After Edit -Lorsqu’il est utilisé, cet événement est généré après chaque modification du contenu d’un objet saisissable, quelle que soit l’action à l’origine de cette modification, c'est-à-dire : -\- les actions d’édition standard entraînant une modification du contenu telles que coller, couper, effacer ou annuler ; -\- le déposer d’une valeur (action similaire au coller) ; -\- toute saisie au clavier effectuée par l’utilisateur ; dans ce cas, l’événement On After Edit est généré après les événements On Before Keystroke et On After Keystroke s’ils sont utilisés. -\- une modification effectuée via une commande du langage simulant une action utilisateur (i.e. [POST KEY](post-key.md)). -Attention, les actions suivantes ne déclenchent PAS cet événement : -\- les actions d’édition ne modifiant pas le contenu de la zone, comme copier ou tout sélectionner, ou le glisser d’une valeur (action similaire au copier) ; en revanche, ces actions modifient l'emplacement du curseur et déclenchent l'événement On Selection Change. -\- les modifications de contenu effectuées par programmation, à l’exception des commandes simulant une action utilisateur. -Cet événement permet de contrôler les actions utilisateur afin, par exemple, d’interdire de coller un texte trop volumineux, de filtrer certains caractères ou d’empêcher le couper d’un champ de mot de passe. -* On Selection Change : lorsqu'il est appliqué à un champ ou une variable de texte (saisissable ou non), cet événement est déclenché à chaque changement de position du curseur. C'est le cas par exemple dès que l'utilisateur sélectionne du texte à l'aide de la souris ou des touches fléchées du clavier, ou saisit du texte. Ce principe permet d'appeler par exemple des commandes telles que [GET HIGHLIGHT](get-highlight.md). - -##### Objets modifiables - -Les objets modifiables sont des objets ayant une source de données, dont la valeur peut être modifiée à l'aide de la souris ou du clavier, mais qui ne sont pas gérés par l'événement On Clicked. Ces objets sont les suivants : - -* Tous les champs saisissables (sauf BLOB) -* Toutes les variables saisissables (sauf BLOB, pointeurs et tableaux) -* Combo-boxes -* Objets externes (pour lesquels la saisie de données est validée par le plug-in) -* Listes hiérarchiques -* List box et colonnes de list box - -Ces objets reçoivent les événements On Data Change. Lorsque la propriété d'événement On Data Change est sélectionnée pour un de ces objets, vous pouvez détecter et gérer la modification de la valeur de la source de données à l'aide de la commande **Form event code** qui retourne On Data Change. L'événement est généré dès que la variable associée à l'objet est mise à jour en interne par 4D (c'est-à-dire, en général, lorsque la zone de saisie de l'objet perd le focus). - -##### Objets tabulables - -Les objets tabulables sont ceux qui peuvent recevoir le focus lorsque vous utilisez la touche **Tab** et/ou si vous cliquez dessus. L'objet qui a le focus est celui qui reçoit les caractères saisis via le clavier et qui ne sont pas les modificateurs d'une commande de menu ou d'un objet tel qu'un bouton. - -TOUS les objets sont tabulables SAUF ceux listés ci-dessous : - -* Variables ou champs non saisissables -* Grilles de boutons -* Boutons 3D, boutons radio 3D, cases à cocher 3D -* Pop-up/listes déroulantes -* Menus déroulants hiérarchiques -* Pop-up menus Image -* Zones de défilement -* Boutons invisibles, boutons inversés, boutons radio Images -* Graphes -* Objets externes (pour lesquels la saisie de données est validée par le plug-in 4D) -* Onglets -* Séparateurs - -Lorsque les événements On Getting Focus et/ou On Losing Focus sont sélectionnés pour un objet tabulable, vous pouvez détecter et gérer la modification du focus à l'aide de la commande **Form event code** qui retournera On Getting Focus or On Losing Focus en fonction de l'événement. - -##### Boutons 3D - -Les boutons 3D autorisent la mise en place d’interfaces graphiques avancées (pour une description des boutons 3D, reportez-vous au manuel Mode Développement). Outre les événements génériques, deux événements spécifiques permettent de gérer de ces boutons : - -* On Long Click : cet événement est généré lorsqu’un bouton 3D reçoit un clic et que le bouton de la souris reste enfoncé pendant un certain laps de temps. En pratique, le délai à l’issue duquel l’événement est généré est égal au délai maximal séparant un double-clic, tel qu’il a été défini dans les préférences du système. -Cet événement peut être généré pour tous les styles de boutons 3D, boutons radio 3D et cases à cocher 3D, à l’exception des boutons 3D “ancienne génération” (style Décalage du fond) et des zones de flèche des boutons 3D avec pop up menu (cf. ci-dessous). -Cet événement est généralement utilisé pour afficher des pop up menus en cas de clics longs sur des boutons. L’événement On Clicked, s’il est coché, est généré si l’utilisateur relâche le bouton de la souris avant le délai du “clic long”. -* On Alternative Click : certains styles de boutons 3D peuvent être associés à un pop up menu et afficher une flèche. Un clic sur cette flèche fait généralement apparaître un menu de sélection proposant des actions alternatives supplémentaires en rapport avec l’action principale du bouton. -4D vous permet de gérer ce type de bouton à l’aide de l'événement On Alternative Click. Cet événement est généré lorsque l’utilisateur clique sur la “flèche” (l'événement est généré dès que le bouton de la souris est enfoncé) : -\- si le pop up menu est de type “Séparé”, l’événement est généré uniquement en cas de clic sur la zone fléchée du bouton. -\- si le pop up menu est de type “Lié”, l’événement est généré en cas de clic sur n’importe quelle partie du bouton. A noter qu’avec ce type de bouton, l’événement On Long Click ne peut pas être généré. -![](../assets/en/commands/pict2074286.fr.png) - -Les styles de boutons 3D, boutons radio 3D et cases à cocher 3D acceptant la propriété “Avec pop up menu” sont : Aucun, Bouton barre outils, Bevel, Bevel arrondi et Office XP. - -##### List box - -Plusieurs événements formulaire permettent de prendre en charge les spécificités des list box : - -* On Before Data Entry : cet événement est généré juste avant qu’une cellule de list box passe en mode édition (c’est-à-dire, avant que le curseur de saisie soit affiché). Cet événement permet au développeur, par exemple, d’afficher un texte différent selon que l’utilisateur est en mode affichage ou édition. -* On Selection Change : cet événement est généré à chaque fois que la sélection courante de lignes ou de colonnes de la list box est modifiée. Cet événement est également généré pour les listes d’enregistrements et les listes hiérarchiques. -* On Column Moved : cet événement est généré lorsqu’une colonne de list box est déplacée par l’utilisateur via le glisser-déposer. Il n’est pas généré si la colonne est glissée et déposée à son emplacement initial. La commande [LISTBOX MOVED COLUMN NUMBER](listbox-moved-column-number.md) permet de connaître le nouvel emplacement de la colonne. -* On Row Moved : cet événement est généré lorsqu’une ligne de list box est déplacée par l’utilisateur via le glisser-déposer. Il n’est pas généré si la ligne est glissée et déposée à son emplacement initial. -* On Column Resize : cet événement est généré lorsque la largeur d’une colonne de list box est modifiée par l'utilisateur. -* On Expand et On Collapse : ces événements sont générés lorsqu'une ligne de list box hiérarchique est déployée ou contractée. -* On Header Click : cet événement est généré lorsqu’un clic se produit sur l’en-tête d’une colonne de list box. Dans ce cas, la commande [Self](self.md) permet de connaître l’en-tête de colonne sur laquelle le clic s’est produit. L’événement On Clicked est généré lorsqu’un clic droit (Windows) ou un Ctrl+clic (Mac OS) se produit sur une colonne ou un en-tête de colonne. Vous pouvez tester le nombre de clics effectués par l'utilisateur à l'aide de la commande [Clickcount](clickcount.md). -Si la propriété **Triable** a été cochée pour la list box, il est possible d’autoriser ou non le tri standard sur la colonne en passant la valeur 0 ou -1 dans la variable $0 : -\- Si $0 vaut 0, le tri standard est effectué. -\- Si $0 vaut -1, le tri standard n’est pas effectué et l’en-tête n’affiche pas la flèche de tri. Le développeur peut toutefois générer un tri des colonnes sur des critères personnalisés à l’aide des commandes de gestion des tableaux de 4D. -Si la propriété **Triable** n’a pas été cochée pour la list box, la variable $0 n’est pas utilisée. -* On Footer Click : cet événement est disponible pour l'objet list box ou colonne de list box. Il est généré lorsqu’un clic se produit dans la zone de pied de la list box ou de la colonne de list box. Dans ce cas, la commande [OBJECT Get pointer](object-get-pointer.md) retourne un pointeur vers la variable de pied ayant reçu le clic. L’événement est généré pour les clics gauche et droit. Vous pouvez tester le nombre de clics effectués par l'utilisateur à l'aide de la commande [Clickcount](clickcount.md). -* On After Sort : cet événement est généré juste après qu’un tri standard ait été effectué (i.e. il n’est pas généré si $0 retourne -1 dans l’événement On Header Click). Ce mécanisme est utile pour conserver le sens du dernier tri effectué par l’utilisateur. Dans cet événement, la commande [Self](self.md) retourne un pointeur sur la variable d'en-tête de la colonne ayant été triée. -* On Delete Action : cet événement est généré à chaque fois que l’utilisateur tente de supprimer la ou les ligne(s) sélectionnée(s) en appuyant sur une touche de suppression (**Suppr** ou **Ret. Arr.**) ou en sélectionnant la commande **Supprimer** dans le menu **Edition**. L’événement est disponible uniquement au niveau de l’objet list box. A noter que la génération de l’événement est la seule action effectuée par 4D : le programme ne supprime aucune ligne. Il appartient au développeur de prendre en charge la suppression et éventuellement l’affichage préalable d’un message d’alerte. -* On Scroll (nouveauté v15) : cet événement est généré dès que l'utilisateur fait défiler les lignes ou les colonnes de la list box. L'événement est uniquement généré lorsque le défilement est le résultat d'une action utilisateur : activation des barres et/ou des curseurs de défilement, utilisation de la roulette de la souris ou du clavier. Il n'est donc pas généré lorsque le défilement est provoqué par l'exécution de la commande [OBJECT SET SCROLL POSITION](object-set-scroll-position.md). -Cet événement est généré après tous les autres événements liés à l'action de défilement (On Clicked, On After Keystroke, etc.). L'événement est généré uniquement dans la méthode objet (et non dans la méthode formulaire). Reportez-vous à l'exemple 15. -* On Alternative Click (nouveauté v15) : cet événement est généré dans les colonnes de list box de type tableau d'objets, lorsque l'utilisateur clique sur un bouton d'ellipse de widget (attribut "alternateButton"). Pour plus d'informations, reportez-vous à la section *Utiliser des tableaux objets dans les colonnes*. - -Deux événements génériques sont également utilisables dans le contexte d'une list box de type "sélection" : - -* On Open Detail : cet événement est généré lorsqu’un enregistrement est sur le point d’être affiché dans le formulaire détaillé associé à la list box (et avant que ce formulaire soit ouvert). -* On Close Detail : généré lorsqu’un enregistrement affiché dans le formulaire détaillé associé à la list box est sur le point d’être refermé (que l’enregistrement ait été modifié ou non). - -##### Listes hiérarchiques - -Outre les événements génériques, plusieurs événements formulaires spécifiques permettent de prendre en charge les actions utilisateurs effectuées sur les listes hiérarchiques : - -* On Selection Change : cet événement est généré à chaque fois que la sélection dans la liste hiérarchique est modifiée à la suite d’un clic ou de la frappe d’une touche au clavier. -Cet événement est également généré dans les objets list box et les listes d’enregistrements. -* On Expand : cet événement est généré à chaque fois qu’un élément de la liste hiérarchique a été déployé via un clic ou une touche du clavier. -* On Collapse : cet événement est généré à chaque fois qu’un élément de la liste hiérarchique a été contracté via un clic ou une touche du clavier. -* On Delete Action : cet événement est généré à chaque fois que l’utilisateur tente de supprimer le ou les élément(s) sélectionné(s) en appuyant sur une touche de suppression (**Suppr** ou **Ret. Arr.**) ou en sélectionnant la commande **Supprimer** dans le menu **Edition**. A noter que la génération de l’événement est la seule action effectuée par 4D : le programme ne supprime aucun élément. Il appartient au développeur de prendre en charge la suppression et éventuellement l’affichage préalable d’un message d’alerte (cf. exemple). - -Ces événements ne sont pas mutuellement exclusifs. Ils peuvent être générés les uns après les autres pour une liste hiérarchique : -\- Suite à la frappe d’une touche clavier (dans l’ordre) : - -| **Evénement** | **Contexte** | -| ----------------------- | ------------------------------------------------------------------------ | -| On Data Change | Un élément était en édition | -| On Expand / On Collapse | Ouverture/fermeture de sous-liste à l’aide des touches fléchées -> ou <- | -| On Selection Change | Sélection d’un nouvel élément | -| On Clicked | Activation de la liste par le clavier | - - -\- Suite à un clic souris (dans l’ordre) : - -| **Evénement** | **Contexte** | -| ------------------------------------------- | ------------------------------------------------------------------------------------ | -| On Data Change | Un élément était en édition | -| On Expand / On Collapse | Ouverture/fermeture de sous-liste via un clic sur l’icône de déploiement/contraction | -| ou bien | | -| Double-clic sur une sous-liste non éditable | | -| On Selection Change | Sélection d’un nouvel élément | -| On Clicked / On Double Clicked | Activation de la liste par un clic ou un double-clic | - -##### Variables et champs image - -* L'événement formulaire On Scroll est généré dès que l'utilisateur fait défiler une image à l'intérieur de la zone (variable ou champ) qui la contient. Il est possible de faire défiler le contenu d'une zone image lorsque la taille de la zone est inférieure à son contenu et que le format d'affichage est "**tronqué (non centré)**". Pour plus d'informations sur ce point, reportez-vous au paragraphe *Formats image*. -L'événement est généré lorsque le défilement a pour origine une action utilisateur, quelle que soit cette action : utilisation des curseurs ou des barres de défilement, de la molette de la souris ou des touches de défilement du clavier (pour plus d'informations sur les commandes de défilement accessibles au clavier, reportez-vous à la section *Barres de défilement*). Il n'est donc pas généré lorsque l'image défile à la suite de l'exécution de la commande [OBJECT SET SCROLL POSITION](object-set-scroll-position.md). Cet événement est généré après tous les autres événements liés à l'action de défilement (On Clicked, On After Keystroke, etc.). Il est généré uniquement dans la méthode objet (et non dans la méthode formulaire). Reportez-vous à l'exemple 14\. -* (Nouveauté v16) L'événement On Mouse Up est généré lorsque l'utilisateur vient de relâcher le bouton de la souris alors qu'il était en train d'effectuer un glisser dans une zone image (champ ou variable). Cet événement est utile, par exemple, lorsque vous voulez permettre à l'utilisateur de déplacer, redimensionner ou dessiner des objets dans une zone SVG. -Lorsque l'événement On Mouse Up est généré, vous pouvez récupérer les coordonnées locales de l'emplacement où le bouton de la souris a été relâché. Ces coordonnées sont retournées dans les *Variables système* **MouseX** et **MouseY**. Les coordonnées relatives sont exprimées en pixels par rapport au coin supérieur gauche de l'image (0,0). -Lorsque vous utilisez cet événement, il est également nécessaire d'appeler la commande [Is waiting mouse up](is-waiting-mouse-up.md) pour traiter les cas où le "gestionnaire d'état" du formulaire est désynchronisé, c'est-à-dire lorsque l'événement On Mouse Up n'est jamais reçu après un clic. C'est le cas par exemple lorsqu'une boîte de dialogue d'alerte s'affiche au-dessus du formulaire alors que le bouton de la souris n'a pas encore été relâché. Pour plus d'informations et un exemple d'utilisation de l'événement On Mouse Up, veuillez vous référer à la description de la commande [Is waiting mouse up](is-waiting-mouse-up.md). - -**Note :** Si la propriété "Glissable" est cochée pour l'objet image, l'événement On Mouse Up n'est jamais généré. - -##### Sous-formulaires - -Un objet conteneur de sous-formulaire (objet inclus dans le formulaire parent, contenant une instance de sous-formulaire) prend en charge les événements suivants : - -* On Load et On Unload : respectivement ouverture et fermeture du sous-formulaire (ces événements doivent également avoir été activés au niveau du formulaire parent pour être pris en compte). A noter que ces événements sont générés avant ceux du formulaire parent. A noter également que, conformément aux principes de fonctionnement des événements formulaire, si le sous-formulaire est placé sur une page autre que la page 0 ou 1, ces événements ne sont générés qu’au moment de l’affichage/la fermeture de la page (et non du formulaire). -* On Validate : validation de la saisie dans le sous-formulaire. -* On Data Change : la variable associée à l’objet conteneur du sous-formulaire a été modifiée. -* On Getting Focus et On Losing Focus : le conteneur de sous-formulaire vient de recevoir ou de perdre le focus. Ces événements sont générés dans la méthode de l’objet sous-formulaire lorsqu’ils sont cochés. Ils sont envoyés à la méthode formulaire du sous-formulaire, ce qui permet par exemple de gérer l’affichage de boutons de navigation dans le sous-formulaire en fonction du focus. A noter que les objets du sous-formulaire peuvent eux-mêmes recevoir le focus. -* On Bound Variable Change : cet événement spécifique est généré dans le contexte de la méthode formulaire du sous-formulaire dès qu’une valeur est affectée à la variable associée au sous-formulaire dans le formulaire parent (même si la même valeur est réaffectée), et si le sous-formulaire appartient à la page formulaire courante ou à la page 0\. Ce principe permet de mettre à jour le contenu du sous-formulaire à la suite de la modification de la variable associée au conteneur du sous-formulaire dans le formulaire parent. Pour plus d'informations sur la gestion des sous-formulaires, reportez-vous au manuel *Mode Développement*. - -**Note :** Il est possible de définir tout type d’événement personnalisé pouvant être généré dans un sous-formulaire via la commande [CALL SUBFORM CONTAINER](call-subform-container.md). Cette commande permet d’appeler la méthode de l’objet conteneur et de lui passer un code d’événement. - -**Note :** Les événements On Clicked et On Double Clicked générés dans le sous-formulaire sont reçus en premier lieu par la méthode formulaire du sous-formulaire puis par la méthode formulaire du formulaire hôte. - -##### Zones Web - -Sept événements formulaires spécifiques sont disponibles pour les zones Web : - -* On Begin URL Loading : cet événement est généré au début du chargement d’un nouvel URL dans la zone Web. La variable "URL" associée à la zone Web vous permet de connaître l’URL en cours de chargement. -**Note :** L’URL en cours de chargement est différent de l’URL courant (reportez-vous à la description de la commande [WA Get current URL](wa-get-current-url.md)). -* On URL Resource Loading : cet événement est généré à chaque chargement d’une nouvelle ressource (image, frame, etc.) dans la page Web courante. La variable "Progression du chargement" associée à la zone vous permet de connaître l’état courant du chargement. -* On End URL Loading : cet événement est généré lorsque toutes les ressources de l’URL courant ont été chargées. Vous pouvez appeler la commande [WA Get current URL](wa-get-current-url.md) afin de connaître l’URL chargé. -* On URL Loading Error : cet événement est généré lorsqu’une erreur a été détectée au cours du chargement d’un URL. Vous pouvez appeler la commande [WA GET LAST URL ERROR](wa-get-last-url-error.md) afin d’obtenir des informations sur l’erreur. -* On URL Filtering : cet événement est généré lorsque le chargement d’un URL a été bloqué par la zone Web du fait d’un filtre mis en place via la commande [WA SET URL FILTERS](wa-set-url-filters.md). Vous pouvez alors connaître l’URL bloqué à l’aide de la commande [WA Get last filtered URL](wa-get-last-filtered-url.md). -* On Open External Link : cet événement est généré lorsque le chargement d’un URL a été bloqué par la zone Web et que l’URL a été ouvert avec le navigateur courant du système, du fait d’un filtre mis en place via la commande [WA SET EXTERNAL LINKS FILTERS](wa-set-external-links-filters.md). Vous pouvez alors connaître l’URL bloqué à l’aide de la commande [WA Get last filtered URL](wa-get-last-filtered-url.md). -* On Window Opening Denied : cet événement est généré lorsque l’ouverture d’une fenêtre pop up a été bloquée par la zone Web. En effet, les zones Web 4D ne permettent pas l’ouverture de fenêtres pop up. Vous pouvez alors connaître l’URL bloqué à l’aide de la commande [WA Get last filtered URL](wa-get-last-filtered-url.md). - -##### Zones 4D View Pro - -Les événements suivants sont disponibles pour les zones 4D View Pro : - -* On After Edit: Cet événement est généré à la suite d'une modification apportée dans la zone 4D View Pro. -* On Clicked: Cet événement est généré lorsque à la suite d'un clic dans l'affichage de la zone 4D View Pro (hors des en-têtes, barres de défilement ou de la boîte à outils) -* On Column Resize: Cet événement est généré lorsque la largeur d'une colonne est modifiée par un utilisateur -* On Double Clicked: Cet événement est généré à la suite d'un double-clic dans la zone 4D View Pro -* On Header Click: Cet événement est généré à la suite d'un clic dans l'en-tête d'une colonne ou d'une ligne -* On Row Resize: Cet événement est généré lorsque la hauteur d'une ligne est modifiée par un utilisateur -* On Selection Change: Cet événement est généré lorsqu'une sélection courante de lignes ou de colonnes est modifiée. -* On VP Ready Cet événement est généré lorsque le chargement de la zone 4D View Pro est terminé. Il est nécessaire d'utiliser cet événement lorsque vous écrivez du code d'initialisation pour la zone. - -Pour plus d'informations, veuillez vous reporter à la section *Evénement formulaire Sur VP prêt*. - -#### Exemple 1 - -L'exemple suivant montre l'utilisation de l'événement On Validate pour affecter automatiquement la date lorsque l'enregistrement est modifié : - -```4d -  // Méthode d'un formulaire - Case of -  // ... -    :(FORM Event=On Validate) -       [LaTable]Date de modification:=Current date - End case -``` - -#### Exemple 2 - -Dans l'exemple suivant, la gestion complète d'un menu déroulant (initialisation, clics et relâchement de l'objet) est placée dans la méthode de l'objet : - -```4d -  // Méthode objet du menu déroulant taTaille - Case of -    :(Form event code=On Load) -       ARRAY TEXT(taTaille;3) -       taTaille{1}:="Petit" -       taTaille{2}:="Moyen" -       taTaille{3}:="Grand" -    :(Form event code=On Clicked) -       If(taTaille#0) -          ALERT("Vous avez choisi la taille "+taTaille{taTaille}+".") -       End if -    :(Form event code=Sur libération) -       CLEAR VARIABLE(taTaille) - End case -``` - -#### Exemple 3 - -L'exemple suivant montre comment, dans une méthode objet, gérer et valider l'opération de glisser-déposer à partir d'un champ qui n'accepte que des images. - -```4d -  // Méthode objet du champ Image [LaTable]uneImage - Case of -    :(FORM Event=On Drag Over) -  // On est en train de glisser-déposer un objet et la souris est au-dessus d'un champ -  // Obtenir les informations sur l'objet source -       DRAG AND DROP PROPERTIES($vpObjetSource;$vlElémentSource;$lProcessSource) -  // Notez que nous n'avons pas besoin de tester le numéro de process source -  // pour la méthode objet exécutée parce qu'elle est dans le même process -       $vlTypeDonnées:=Type($vpSrcObject->) -  // Les données source sont-elles une image (champ, variable ou tableau) ? -       If(($vlTypeDonnées=Is picture)|($vlTypeDonnées=Picture array)) -  // Accepter l'opération -          $0:=0 -       Else -  // Else, refuser l'opération -          $0:=-1 -       End if -    :(FORM Event=On Drop) -  // Les données source ont été déposées sur l'objet, donc nous avons besoin de les copier dans l'objet. -  // Obtenir les informations sur l'objet source -       DRAG AND DROP PROPERTIES($vpObjetSource;$vlElémentSource;$lProcessSource) -       $vlTypeDonnées:=Type($vpSrcObject->) -       Case of -  // L'objet source est un champ ou une variable de type Image -          :($vlTypeDonnées=Is picture) -  // Est-ce que l'objet source est dans le même process (dans la même fenêtre et le même -             formulaire)? -             If($lProcessSource=Current process) -  // Copier la valeur source -                [LaTable]uneImage:=$vpObjetSource-> -             Else -  // Else, est-ce que l'objet source est une variable ? -                If(Is a variable($vpObjetSource)) -  // Obtenir la valeur du process source -                   GET PROCESS VARIABLE($lProcessSource;$vpObjetSource->;$vgImageGlissée) -                   [LaTable]uneImage:=$vgImageGlissée -                Else -  // Else, utiliser APPELER PROCESS pour obtenir la valeur du champ du process source -                End if -             End if -  // L'objet source est un tableau de type Image -          :($vlTypeDonnées=Picture array) -  // Est-ce que l'objet source est dans le même process (dans la même fenêtre et le même -             formulaire)? -             If($lProcessSource=Current process) -  // Copier la valeur source -                [LaTable]uneImage:=$vpSrcObject->{$vlElémentSource} -             Else -  // Else, obtenir la valeur du process source -                GET PROCESS VARIABLE($lProcessSource;$vpObjetSource -                ->{$vlElémentSource};$vgImageGlissée) -                [LaTable]uneImage:=$vgImageGlissée -             End if -       End case - End case -``` - -**Note :** Pour d'autres exemples sur la gestion des événements On Drag Over et On Drop, référez-vous aux exemples de la commande *\_o\_DRAG AND DROP PROPERTIES*. - -#### Exemple 4 - -L'exemple suivant est une méthode formulaire générique. Elle fait apparaître chacun des événements qui peuvent survenir lorsqu'un formulaire est utilisé comme formulaire sortie : - -```4d -  // Méthode formulaire d'un formulaire sortie - $vpFormTable:=Current form table - Case of -  // ... -    :(Form event code=Sur entête) -  // La zone en-tête va être imprimée ou affichée -       Case of -          :(Before selection($vpFormTable->)) -  // Le code pour la première rupture d'en-tête doit être placé ici -          :(Level=1) -  // Le code pour la rupture d'en-tête niveau 1 doit être placé ici -          :(Level=2) -  // Le code pour la rupture d'en-tête niveau 2 doit être placé ici -  // ... -       End case -    :(Form event code=On Printing Detail) -  // Un enregistrement va être imprimé -  // Le code pour chaque enregistrement doit être placé ici -    :(Form event code=On Printing Break) -  // Une rupture va être imprimée -       Case of -          :(Level=0) -  // Le code pour la rupture 0 doit être placé ici -          :(Level=1) -  // Le code pour la rupture 1 doit être placé ici -  // ... -       End case -    :(Form event code=On Printing Footer) -       If(End selection($vpFormTable->)) -  // Le code pour le dernier pied de page doit être placé ici -       Else -  // Le code pour le pied de page doit être placé ici -       End if - End case -``` - -#### Exemple 5 - -L'exemple suivant montre une méthode formulaire générique qui gère les événements pouvant survenir dans un formulaire sortie quand il s'affiche à l'aide de [DISPLAY SELECTION](display-selection.md) ou [MODIFY SELECTION](modify-selection.md). Dans un but informatif, elle affiche l'événement dans la barre de titre de la fenêtre. - -```4d -  // Une méthode formulaire exemple - Case of -    :(Form event code=On Load) -       $vaEvénement:="Le formulaire va être affiché" -    :(Form event code=Sur libération) -       $vaEvénement:="Le formulaire sortie vient de se fermer et va disparaître de l'écran" -    :(Form event code=On Display Detail) -       $vaEvénement:="Affichage de l'enregistrement n°"+String(Numero dans selection([LaTable])) -    :(Form event code=Sur menu sélectionné) -       $vaEvénement:="Une commande de menu a été sélectionnée" -    :(Form event code=Sur entête) -       $vaEvénement:="L'en-tête va être imprimé ou affiché" -    :(Form event code=On Clicked) -       $vaEvénement:="On a cliqué sur un enregistrement" -    :(Form event code=On Double Clicked) -       $vaEvénement:="On a double-cliqué sur un enregistrement" -    :(Form event code=On Open Detail) -       $vaEvénement:="On a double-cliqué sur l'enregistrement n°"+String(Numero dans selection([LaTable])) -    :(Form event code=On Close Detail) -       $vaEvénement:="Retour au formulaire sortie" -    :(Form event code=On Activate) -       $vaEvénement:="La fenêtre du formulaire passe au premier plan" -    :(Form event code=Sur désactivation) -       $vaEvénement:="La fenêtre du formulaire n'est plus au premier plan" -    :(Form event code=Sur menu sélectionné) -       $vaEvénement:="Une ligne de menu a été sélectionnée" -    :(Form event code=Sur appel extérieur) -       $vaEvénement:="Un appel extérieur a été reçu" -    Else -       $vaEvénement:="Que se passe-t-il ? L'événement n°"+String(Evenement formulaire) - End case - SET WINDOW TITLE($vaEvénement) -``` - -#### Exemple 6 - -Pour des exemples de gestion des événements On Before Keystroke et On After Keystroke, référez-vous aux exemples des commandes [Get edited text](get-edited-text.md), [Keystroke](keystroke.md) et [FILTER KEYSTROKE](filter-keystroke.md). - -#### Exemple 7 - -L'exemple suivant montre comment traiter de la même manière les clics et double-clics dans une zone de défilement : - -```4d -  // Méthode objet pour la zone de défilement taChoix - Case of -    :(Form event code=On Load) -       ARRAY TEXT(taChoix;...) -  // ... -       taChoix:=0 -    :((Form event code=On Clicked)|(Form event code=On Double Clicked)) -       If(taChoix#0) -  // On a cliqué sur un élément, faire quelque chose -  // ... -       End if -  // ... - End case -``` - -#### Exemple 8 - -L'exemple suivant montre comment traiter les clics et double-clics de manière différente (notez l'utilisation de l'élément zéro pour conserver la valeur de l'élément sélectionné) : - -```4d -  // Méthode objet pour la zone de défilement taChoix - Case of -    :(FORM Event=On Load) -       ARRAY TEXT(taChoix;...) -  // ... -       taChoix:=0 -       taChoix{0}:="0" -    :(FORM Event=On Clicked) -       If(taChoix#0) -          If(taChoix#Num(taChoix)) -  // On a cliqué sur un élément, faire quelque chose -  // ... -  // Sauvegarder l'élément nouvellement sélectionné pour la prochaine fois -             taChoix{0}:=String(taChoix) -          End if -       Else -          taChoix:=Num(taChoix{0}) -       End if -    :(FORM Event=On Double Clicked) -       If(taChoix#0) -  // On a double-cliqué sur un élément, faire quelque chose -       End if -  // ... - End case -``` - -#### Exemple 9 - -L'exemple suivant montre comment maintenir une zone contenant du texte à partir d'une méthode formulaire à l'aide des événements On Getting Focus et On Losing Focus : - -```4d -  // Méthode formulaire [Contacts];"Entrée" - Case of -    :(FORM Event=On Load) -       var vtZoneEtat : Text -       vtZoneEtat:="" -    :(FORM Event=On Getting Focus) -       RESOLVE POINTER(Focus object;$vsNomVar;$vlNumTable;$vlNumChamp) -       If(($vlNumTable#0) & ($vlNumChamp#0)) -          Case of -             :($vlNumChamp=1) // Champ nom -                vtZoneEtat:="Saisissez le nom du contact, il sera automatiquement mis en majuscules." -  // ... -             :($vlNumChamp=10) // Champ code postal -                vtZoneEtat:="Saisissez un code postal, il sera automatiquement vérifié et validé." -  // ... -          End case -       End if -    :(FORM Event=On Losing Focus) -       vtZoneEtat:="" -  // ... - End case -``` - -#### Exemple 10 - -L'exemple suivant montre comment traiter l'événement de fermeture de fenêtre avec un formulaire utilisé pour l'entrée des données : - -```4d -  // Méthode pour un formulaire entrée - $vpFormulaireTable:=Current form table - Case of -  // ... -    :(Form event code=On Close Box) -       If(Modified record($vpFormulaireTable->)) -          CONFIRM("Cet enregistrement a été modifié. Voulez-vous sauvegarder les modifications ?") -          If(OK=1) -             ACCEPT -          Else -             CANCEL -          End if -       Else -          CANCEL -       End if -  // ... - End case -``` - -#### Exemple 11 - -L'exemple suivant montre comment mettre en majuscules un champ Texte ou Alphanumérique chaque fois que la valeur est modifiée : - -```4d -  // Méthode objet pour [Contacts]Prénom - Case of -  // ... -    :(Form event code=Sur données modifiées) -       [Contacts]Prénom:=Uppercase(Substring([Contacts]Prénom;1;1))+Lowercase(Substring([Contacts]Prénom;2)) -  // ... - End case -``` - -#### Exemple 12 - -L'exemple suivant montre comment mettre en majuscules un champ Texte ou Alphanumérique chaque fois que la valeur est modifiée : - -```4d -  // Méthode objet pour [Contacts]Prénom - Case of -  // ... -    :(Form event code=Sur données modifiées) -       [Contacts]Prénom:=Uppercase(Substring([Contacts]Prénom;1;1))+Lowercase(Substring([Contacts]Prénom;2)) -  // ... - End case -``` - -#### Exemple 13 - -L'exemple suivant propose une manière de gérer une action de suppression dans une liste hiérarchique : - -```4d - ... //méthode de la liste hiérarchique -:(Form event code=On Delete Action) - ARRAY LONGINT($itemsArray;0) - $Ref:=Selected list items(<>HL;$itemsArray;*) - $n:=Size of array($itemsArray) -  - Case of -    :($n=0) -       ALERT("Pas d’élément sélectionné") -       OK:=0 -    :($n=1) -        CONFIRM("Voulez-vous supprimer cet élément ?") -    :($n>1) -       CONFIRM("Voulez-vous supprimer ces éléments ?") - End case -  - If(OK=1) -    For($i;1;$n) -       DELETE FROM LIST(<>HL;$itemsArray{$i};*) -    End for - End if -``` - -#### Exemple 14 - -Dans cet exemple, l'événement formulaire On Scroll permet de synchroniser l'affichage de deux images dans un formulaire. Le code suivant est ajouté dans la méthode de l'objet "satellite" (champ image ou variable image) : - -```4d - Case of -    :(FORM Event=On Scroll) -           // on relève la position de l'image de gauche -       OBJECT GET SCROLL POSITION(*;"satellite";vPos;hPos) -           // on l'applique à l'image de droite -       OBJECT SET SCROLL POSITION(*;"plan";vPos;hPos;*) - End case -``` - -Résultat : - -#### Exemple 15 - -Vous souhaitez dessiner un rectangle rouge autour de la cellule sélectionnée d'une list box, et vous voulez que le rectangle se déplace si l'utilisateur fait défiler verticalement la list box. Dans la méthode objet de la list box, vous pouvez écrire : - -```4d - Case of -  -    :(Form event code=On Clicked) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT SET VISIBLE(*;"RedRect";True)  //initialiser rectangle rouge -       OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -  -    :(Form event code=Sur défilement) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT GET COORDINATES(*;"LB1";$xlb1;$ylb1;$xlb2;$ylb2) -  //tenir compte de la hauteur de l'entête pour ne pas que le rectangle empiète dessus -       $toAdd:=LISTBOX Lire hauteur entêtes(*;"LB1") -       If($ylb1+$toAdd<$y1)&($ylb2>$y2) //si nous sommes dans la list box -  //pour simplifier, on ne tient compte que des en-têtes -  //mais il faudrait également gérer le clipping horizontal -  //ainsi que les barres de défilement -          OBJECT SET VISIBLE(*;"RedRect";True) -          OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -       Else -          OBJECT SET VISIBLE(*;"RedRect";False) -       End if -  - End case -``` - -En résultat, le rectangle rouge suit bien le défilement de la list box : - -![](../assets/en/commands/pict1900395.en.png) - -#### Voir aussi - -[CALL SUBFORM CONTAINER](call-subform-container.md) -[Current form table](current-form-table.md) -[FILTER KEYSTROKE](filter-keystroke.md) -[FORM Event](form-event.md) -[Get edited text](get-edited-text.md) -[Keystroke](keystroke.md) -[POST OUTSIDE CALL](post-outside-call.md) -[SET TIMER](set-timer.md) - -#### Propriétés - -| | | -| --- | --- | -| Numéro de commande | 388 | -| Thread safe | ✗ | - - diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md deleted file mode 100644 index a0e06d678df59f..00000000000000 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -id: form-event -title: FORM Event -slug: /commands/form-event -displayed_sidebar: docs ---- - -**FORM Event** : Object - -| Paramètre | Type | | Description | -| --- | --- | --- | --- | -| Résultat | Object | ← | Objet événement | - - - -#### Description - -**FORM Event** retourne un objet contenant des informations sur l'événement formulaire qui vient de se produire. Généralement, vous utiliserez **FORM Event** à partir d'un formulaire ou d'une méthode objet **FORM Event**. - -**Objet retourné** - -Chaque objet retourné inclut les propriétés principales suivantes : - -| **Propriété** | **Type** | **Description** | -| ------------- | ----------- | -------------------------------------------------------------------------------------------------- | -| objectName | texte | Nom de l'objet déclenchant l'événement - Non inclus si l'événement est déclenché par le formulaire | -| code | entier long | Valeur numérique de l'événement formulaire. Voir [Form event code](../commands/form-event-code.md) | -| description | texte | Nom de l'événement formulaire (*ex :* "Sur après modification"). | - -Par exemple, si un bouton est cliqué, l'objet contient les propriétés suivantes : - -```json -{"code":4,"description":"Sur clic","objectName":"Button2"} -``` - -L'objet événement peut contenir des propriétés supplémentaires, en fonction de l'objet lié à l'événement courant. Pour les objets *eventObj* générés dans : - -* les objets List box ou colonnes de list box, voir *la documentation des list box sur developer.4d.com* -* les zones 4D View Pro, voir *Evénement formulaire Sur VP prêt*. - -**Note :** S'il n'existe pas d'événement courant, **FORM Event** retourne un objet null. - -#### Exemple 1 - -Vous souhaitez gérer l'événement Sur clic dans un bouton : - -```4d - If(FORM Event.code=On Clicked) -    ... - End if -``` - -#### Exemple 2 - -Si vous définissez le nom de l'objet colonne avec un nom d'attribut d'une dataclass comme suit: - -![](../assets/en/commands/pict4843820.en.png) - -Vous pouvez trier la colonne à l'aide de l'événement Sur clic entête : - -```4d - Form.event:=FORM Event - Case of -    :(Form event code=On Header Click) -       si(Form.event.columnName="lastname") -       Form.employees:=Form.employees.orderBy(Form.event.columnName+", firstname") -    End if -End case -``` - -#### Exemple 3 - -Vous souhaitez gérer l'événement Sur affichage corps sur un objet List box à l'aide d'une méthode définie dans la propriété *Meta info expression* : - -![](../assets/en/commands/pict4843812.en.png) - -La méthode *setColor* : - -```4d - var $event;$0;$meta : Object - $event:=FORM Event - $meta:=New object -  - Case of -    :($event.code=On Display Detail) -       If($event.isRowSelected) -          $meta.fill:="lightblue" -       End if - End case - $0:=$meta -``` - -La list box résultante s'affichera comme suit lorsque les lignes sont sélectionées : - -![](../assets/en/commands/pict4843808.en.png) - -#### Voir aussi - -[Form event code](../commands/form-event-code.md) - -#### Propriétés - -| | | -| --- | --- | -| Numéro de commande | 1606 | -| Thread safe | ✓ | - - diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md deleted file mode 100644 index e17a5b4588b8ad..00000000000000 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nom* {; *} ) : Integer - -| Paramètre | Type | | Description | -| --- | --- | --- | --- | -| nom | Text | → | Nom du process duquel récupérer le numéro | -| * | Operator | → | Retourner le numéro du process serveur | -| Résultat | Integer | ← | Numéro du process | - - - -#### Description - -La commande **Process number** retourne le numéro du process dont vous passez le nom dans *nomProcess*. Si aucun process n'est trouvé, **Process number** retourne 0. - -Le paramètre optionnel *\** vous permet, à partir de 4D Client, de récupérer le numéro d'un process s'exécutant sur le serveur, c'est-à-dire une procédure stockée. Dans ce cas, la valeur retournée est négative. Cette option est particulièrement utile dans le cadre de l'utilisation des commandes [GET PROCESS VARIABLE](get-process-variable.md), [SET PROCESS VARIABLE](set-process-variable.md) et [VARIABLE TO VARIABLE](variable-to-variable.md). Pour plus d'informations, reportez-vous à la description de ces commandes. -Si la commande est exécutée avec le paramètre *\** à partir d'un process tournant sur le poste serveur, la valeur retournée est positive. - -#### Exemple - -Vous créez une palette flottante, fonctionnant dans un process séparé, dans lequel vous implémentez vos propres outils pour interagir avec l'environnement Développement. Par exemple, quand vous sélectionnez un élément dans une liste hérarchique de mots-clés, vous voulez coller du texte dans la fenêtre de premier plan du mode Développement. Pour cela, vous pouvez utiliser le presse-papiers, mais l'événement de collage doit se passer dans le process Développement. La petite fonction qui suit retourne le numéro du process de Développement (s'il est actif) : - -```4d -  // Méthode projet Numéro process Développement -  // Numéro process Développement -> Entier long -  // Numéro process Développement -> Numéro du process de Développement -  - $0:=Process number("Process Développement") -  // Note: ceci peut ne pas fonctionner si le nom du process est modifié dans l'avenir -``` - -Avec cette fonction, la méthode projet listée ci-dessous colle le texte reçu en paramètre dans la fenêtre de premier plan du mode Développement (si c'est possible) : - -```4d -  // Méthode projet COLLER TEXTE EN STRUCTURE -  // COLLER TEXTE EN STRUCTURE ( Texte) -  // COLLER TEXTE EN STRUCTURE ( Texte à coller dans la fenêtre de Structure de premier plan ) -  - var $1 : Text - var $vlStructurePID;$vlCompte : Integer -  - $vlStructurePID:=Numero process Développement - If($vlStructurePID #0) -  // Mettre le texte dans le presse-papiers -    SET TEXT TO PASTEBOARD($1) -  // Générer un événement Ctrl-V / Command-V -    POST KEY(Character code("v");Command key mask;$vlStructurePID) -  // Appeler répétitivement ENDORMIR PROCESS pour que le minuteur puisse passer -  // l'événement au process Développement -    For($vlCompte;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Voir aussi - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propriétés - -| | | -| --- | --- | -| Numéro de commande | 372 | -| Thread safe | ✓ | - - diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md deleted file mode 100644 index e17a5b4588b8ad..00000000000000 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nom* {; *} ) : Integer - -| Paramètre | Type | | Description | -| --- | --- | --- | --- | -| nom | Text | → | Nom du process duquel récupérer le numéro | -| * | Operator | → | Retourner le numéro du process serveur | -| Résultat | Integer | ← | Numéro du process | - - - -#### Description - -La commande **Process number** retourne le numéro du process dont vous passez le nom dans *nomProcess*. Si aucun process n'est trouvé, **Process number** retourne 0. - -Le paramètre optionnel *\** vous permet, à partir de 4D Client, de récupérer le numéro d'un process s'exécutant sur le serveur, c'est-à-dire une procédure stockée. Dans ce cas, la valeur retournée est négative. Cette option est particulièrement utile dans le cadre de l'utilisation des commandes [GET PROCESS VARIABLE](get-process-variable.md), [SET PROCESS VARIABLE](set-process-variable.md) et [VARIABLE TO VARIABLE](variable-to-variable.md). Pour plus d'informations, reportez-vous à la description de ces commandes. -Si la commande est exécutée avec le paramètre *\** à partir d'un process tournant sur le poste serveur, la valeur retournée est positive. - -#### Exemple - -Vous créez une palette flottante, fonctionnant dans un process séparé, dans lequel vous implémentez vos propres outils pour interagir avec l'environnement Développement. Par exemple, quand vous sélectionnez un élément dans une liste hérarchique de mots-clés, vous voulez coller du texte dans la fenêtre de premier plan du mode Développement. Pour cela, vous pouvez utiliser le presse-papiers, mais l'événement de collage doit se passer dans le process Développement. La petite fonction qui suit retourne le numéro du process de Développement (s'il est actif) : - -```4d -  // Méthode projet Numéro process Développement -  // Numéro process Développement -> Entier long -  // Numéro process Développement -> Numéro du process de Développement -  - $0:=Process number("Process Développement") -  // Note: ceci peut ne pas fonctionner si le nom du process est modifié dans l'avenir -``` - -Avec cette fonction, la méthode projet listée ci-dessous colle le texte reçu en paramètre dans la fenêtre de premier plan du mode Développement (si c'est possible) : - -```4d -  // Méthode projet COLLER TEXTE EN STRUCTURE -  // COLLER TEXTE EN STRUCTURE ( Texte) -  // COLLER TEXTE EN STRUCTURE ( Texte à coller dans la fenêtre de Structure de premier plan ) -  - var $1 : Text - var $vlStructurePID;$vlCompte : Integer -  - $vlStructurePID:=Numero process Développement - If($vlStructurePID #0) -  // Mettre le texte dans le presse-papiers -    SET TEXT TO PASTEBOARD($1) -  // Générer un événement Ctrl-V / Command-V -    POST KEY(Character code("v");Command key mask;$vlStructurePID) -  // Appeler répétitivement ENDORMIR PROCESS pour que le minuteur puisse passer -  // l'événement au process Développement -    For($vlCompte;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Voir aussi - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propriétés - -| | | -| --- | --- | -| Numéro de commande | 372 | -| Thread safe | ✓ | - - diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md b/i18n/ja/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md deleted file mode 100644 index fe52b02550e6b3..00000000000000 --- a/i18n/ja/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *name* {; *} ) : Integer - -| 引数 | 型 | | 説明 | -| --- | --- | --- | --- | -| name | Text | → | プロセス番号を取り出すプロセス名 | -| * | Operator | → | 4D Serverのプロセス番号を返す | -| 戻り値 | Integer | ← | プロセス番号 | - - - -#### 説明 - -Process numberは、*name*引数に指定した名前を持つプロセス番号を返します。プロセスが見つからない場合には、Process numberは0を返します。 - -オプションの引数 \* を指定すると、サーバ上で実行されたプロセス(ストアドプロシージャ)のプロセスIDを4D Clientで取得することができます。この場合、負の値が返されます。[GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE")や[SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE")コマンドを使用する際には、このオプションが特に役立ちます。詳細はそれぞれのコマンドの説明を参照してください。 - -サーバマシン上のプロセスから引数 *\** を指定してこのコマンドを実行すると、正の値が返されます。 - -#### 例題 - -独立したプロセスで実行するカスタムフローティングウインドウを作成します。このプロセスでは、デザインモードでやり取りができる独自のツールを実装します。例えば、キーワードの階層リストで項目を選択すると、デザインモードの最前面ウインドウにテキストを貼り付けるようなツール。これを実行するにはペーストボードを使用できますが、貼り付けイベントはデザインプロセスの内部で発生する必要があります。以下の関数は、デザインプロセス(が実行している場合)のプロセス番号を返します: - -```4d -  // Design process number プロジェクトメソッド -  // Design process number -> 倍長整数 -  // Design process number -> デザインプロセス番号 -  - $0:=Process number("デザインプロセス") -  // Note: プロセス名が変更されると、このコードは利用できなくなります -``` - -この関数を使用して、下記のプロジェクトメソッドは、引数として受け取ったテキストをデザインモードの最前面のウインドウに貼り付けます(適用可能な場合): - -```4d -  // PASTE TEXT TO DESIGN プロジェクトメソッド -  // PASTE TEXT TO DESIGN ( テキスト) -  // PASTE TEXT TO DESIGN ( デザインモードの最前面ウィンドウに張り付けるテキスト) -  - var $1 : Text - var $vlDesignPID;$vlCount : Integer -  - $vlDesignPID:=Design process number - If($vlDesignPID #0) -  // ペーストボードにテキストを置く -    SET TEXT TO PASTEBOARD($1) -  // Ctrl-V / Cmd-V イベントをポスト -    POST KEY(Character code("v");Command key mask;$vlDesignPID) -  // DELAY PROCESSを繰り返し呼び出して、スケジューラに -  // デザインプロセスへのイベントを渡すチャンスを与える -    For($vlCount;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### 参照 - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### プロパティ - -| | | -| --- | --- | -| コマンド番号 | 372 | -| スレッドセーフである | ✓ | - - diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md deleted file mode 100644 index 5e0d3a77c6417a..00000000000000 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md +++ /dev/null @@ -1,856 +0,0 @@ ---- -id: form-event-code -title: Form event code -slug: /commands/form-event-code -displayed_sidebar: docs ---- - -**Form event code** : Integer - -| 引数 | 型 | | 説明 | -| --- | --- | --- | --- | -| 戻り値 | Integer | ← | フォームイベント番号 | - - - -#### 互換性に関する注意 - -**Form event code** は以前のバージョンの4D では**Form event** という名前でした。これはオブジェクト型を返す[FORM Event](form-event.md) コマンドが追加されたときに、分かりやすさのために名称が変更されました。 - -#### 説明 - -**Form event code**コマンドは、現在生成中のフォームイベントタイプを示す数値を返します。通常フォームやオブジェクトメソッド内で**Form event code**を使用します。 - -4Dには*Form Events*テーマで定義された定数が用意されており、**Form event code**から返される値と比較することができます。 - -イベントには、一般的なイベント(任意のタイプのオブジェクトに対して生成される)と、特定タイプのオブジェクトのみに発生するイベントがあります。 - -| 定数 | 型 | 値 | コメント | -| ------------------------ | ---- | -- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| On Load | 倍長整数 | 1 | フォームが表示または印刷されようとしている | -| On Mouse Up | 倍長整数 | 2 | (*ピクチャーのみ*) ユーザーがピクチャーオブジェクト内にて左マウスボタンを離した | -| On Validate | 倍長整数 | 3 | レコードのデータ入力が受け入れられた | -| On Clicked | 倍長整数 | 4 | オブジェクト上でクリックされた | -| On Header | 倍長整数 | 5 | フォームのヘッダエリアが印刷あるいは表示されようとしている | -| On Printing Break | 倍長整数 | 6 | フォームのブレークエリアのひとつが印刷されようとしている | -| On Printing Footer | 倍長整数 | 7 | フォームのフッタエリアが印刷されようとしている | -| On Display Detail | 倍長整数 | 8 | レコードがリスト中に、あるいは行がリストボックス中に表示されようとしている | -| On VP Ready | 倍長整数 | 9 | (*4D View Proエリアのみ*) 4D View Pro エリアのロードが完了した | -| On Outside Call | 倍長整数 | 10 | フォームが[POST OUTSIDE CALL](post-outside-call.md)による呼び出しを受けた | -| On Activate | 倍長整数 | 11 | フォームウィンドウが最前面のウィンドウになった | -| On Deactivate | 倍長整数 | 12 | フォームウィンドウが最前面のウィンドウでなくなった | -| On Double Clicked | 倍長整数 | 13 | オブジェクト上でダブルクリックされた | -| On Losing Focus | 倍長整数 | 14 | フォームオブジェクトがフォーカスを失った | -| On Getting Focus | 倍長整数 | 15 | フォームオブジェクトがフォーカスを得た | -| On Drop | 倍長整数 | 16 | データがオブジェクトにドロップされた | -| On Before Keystroke | 倍長整数 | 17 | フォーカスのあるオブジェクトに文字が入力されようとしている。[Get edited text](get-edited-text.md)はこの文字を含まないオブジェクトのテキストを返す | -| On Menu Selected | 倍長整数 | 18 | メニュー項目が選択された | -| On Plug in Area | 倍長整数 | 19 | 外部オブジェクトのオブジェクトメソッドの実行がリクエストされた | -| On Data Change | 倍長整数 | 20 | オブジェクトのデータが変更された | -| On Drag Over | 倍長整数 | 21 | データがオブジェクト上にドロップされる可能性がある | -| On Close Box | 倍長整数 | 22 | ウィンドウのクローズボックスがクリックされた | -| On Printing Detail | 倍長整数 | 23 | フォームの詳細エリアが印刷されようとしている | -| On Unload | 倍長整数 | 24 | フォームを閉じて解放しようとしている | -| On Open Detail | 倍長整数 | 25 | 出力フォームまたはリストボックスに関連付けられた詳細フォームが開かれようとしている | -| On Close Detail | 倍長整数 | 26 | 入力フォームから離れ、出力フォームに移動しようとしている | -| On Timer | 倍長整数 | 27 | [SET TIMER](set-timer.md)コマンドで設定した時間が経過した | -| On After Keystroke | 倍長整数 | 28 | フォーカスのあるオブジェクトに文字が入力されようとしている。[Get edited text](get-edited-text.md)はこの文字を含むオブジェクトのテキストを返す | -| On Resize | 倍長整数 | 29 | フォームウィンドウまたはサブフォームオブジェクトがリサイズされた (後者の場合は、サブフォームのフォームメソッドにおいてイベントが生成されます) | -| On After Sort | 倍長整数 | 30 | (リストボックスのみ) リストボックスの列中で標準のソートが行われた | -| On Selection Change | 倍長整数 | 31 | リストボックスと4D View Pro: 現在の行や列の選択が変更された リスト中のレコード: リストフォームまたはサブフォームにおいて、カレントレコードあるいはカレントセレクションの行選択が変更された 階層リスト: リスト中の選択がクリックやキーストロークなどで変更された 入力可フィールドや変数: クリックやキー押下により、選択されたテキストやカーソルの位置がエリア内で変更された | -| On Column Moved | 倍長整数 | 32 | (リストボックスのみ) リストボックスの列がユーザのドラッグ&ドロップで移動された | -| On Column Resize | 倍長整数 | 33 | (リストボックスと4D View Pro) リストボックスの列幅がユーザーのマウス操作によって変更された | -| On Row Moved | 倍長整数 | 34 | (リストボックスのみ) リストボックスの行がユーザのドラッグ&ドロップで移動された | -| On Mouse Enter | 倍長整数 | 35 | マウスカーソルがオブジェクトの描画エリア内に入った | -| On Mouse Leave | 倍長整数 | 36 | マウスカーソルがオブジェクトの描画エリアから出た | -| On Mouse Move | 倍長整数 | 37 | マウスカーソルがオブジェクトの描画エリア上で (最低1ピクセル) 動いたか、変更キー(Shift, Alt, Shift Lock)が押された
イベントがオブジェクトに対してのみチェックされていた場合は、マウスカーソルがオブジェクトの描画エリア内にあった場合にのみイベントが生成されます。 | -| On Alternative Click | 倍長整数 | 38 | *3Dボタン:* 3D ボタンの"三角"エリアがクリックされた*リストボックス*: オブジェクト配列のカラム内においてエリプシスボタン("alternateButton" 属性)がクリックされた
**注**: エリプシスボタンはv15以降のバージョンでのみご利用いただけます。 | -| On Long Click | 倍長整数 | 39 | (3Dボタンのみ) 3D ボタンがクリックされ、特定の時間以上マウスボタンが押され続けている | -| On Load Record | 倍長整数 | 40 | リスト更新中、更新中にレコードがロードされた (ユーザがレコード行をクリックし、フィールドが編集モードになった) | -| On Before Data Entry | 倍長整数 | 41 | (リストボックスのみ) リストボックスセルが編集モードに変更されようとしている | -| On Header Click | 倍長整数 | 42 | (リストボックスと4D View Pro) リストボックスの列ヘッダでクリックが行われた | -| On Expand | 倍長整数 | 43 | (階層リストまたは階層リストボックスのみ) クリックやキーストロークで階層リストの要素が展開された | -| On Collapse | 倍長整数 | 44 | (階層リストまたは階層リストボックスのみ) クリックやキーストロークで階層リストの要素が折りたたまれた | -| On After Edit | 倍長整数 | 45 | フォーカスのあるオブジェクトの内容が更新された | -| On Begin Drag Over | 倍長整数 | 46 | オブジェクトがドラッグされている | -| On Begin URL Loading | 倍長整数 | 47 | (Webエリアのみ) 新しいURLがWeb エリアにロードされた | -| On URL Resource Loading | 倍長整数 | 48 | (Webエリアのみ) 新しいリソースがWeb エリアにロードされた | -| On End URL Loading | 倍長整数 | 49 | (Webエリアのみ) URLのすべてのリソースがロードされた | -| On URL Loading Error | 倍長整数 | 50 | (Webエリアのみ) URLをロード中にエラーが発生した | -| On URL Filtering | 倍長整数 | 51 | (Webエリアのみ) Web エリアがURLをブロックした | -| On Open External Link | 倍長整数 | 52 | (Webエリアのみ) 外部URLがブラウザで開かれた | -| On Window Opening Denied | 倍長整数 | 53 | (Webエリアのみ) ポップアップウィンドウがブロックされた | -| On bound variable change | 倍長整数 | 54 | サブフォームにバインドされた変数が更新された | -| On Page Change | 倍長整数 | 56 | フォーム中のカレントページが変更された | -| On Footer Click | 倍長整数 | 57 | (リストボックスのみ) リストボックスあるいはリストボックス列でフッターがクリックされた | -| On Delete Action | 倍長整数 | 58 | (階層リストとリストボックスのみ) ユーザーが項目の削除を試みた | -| On Scroll | 倍長整数 | 59 | マウスやキーボードを使用して、ユーザーがピクチャーフィールドや変数の内容をスクロールした。 | -| On Row Resize | 倍長整数 | 60 | *(4D View Pro のみ)* 行の高さがユーザーのマウスによって変更された | -| On VP Range Changed | 倍長整数 | 61 | 4D Vierw Pro のセルレンジが変更された(例: フォーミュラの計算、値がセルから削除された、など) | - -**注:** 出力フォーム用のイベントを**プロジェクトフォーム**で実装することはできません。関連するイベントは以下の通りです: On Display Detail, On Open Detail, On Close Detail, On Load Record, On Header, On Printing Detail, On Printing Break, On Printing Footer - -#### イベントとメソッド - -フォームイベントが発生すると、4Dは以下のアクションを行います: - -* まず4Dはフォーム中のオブジェクトをブラウズし、発生したオブジェクトイベントがプロパティで選択されているすべてのオブジェクトのオブジェクトメソッドを呼び出します。 -* 次に、発生したイベントに対応するフォームイベントがプロパティで選択されていれば、フォームメソッドを呼び出します。 - -オ ブジェクトメソッドが特定の順序で呼び出されることを期待することはできません。おおざっぱに言って、オブジェクトメソッドは常にフォームメソッドよりも 前に呼び出されます。オブジェクトがサブフォームの場合、サブフォームリストフォームのオブジェクトメソッドが呼び出され、次にリストフォームのフォーム メソッドが呼び出されます。そして4Dは引き続き、親フォームのオブジェクトメソッドを呼び出します。言い換えれば、オブジェクトがサブフォームの時、 4Dはサブフォームオブジェクト内で、オブジェクトとフォームメソッドの関係と同じルールを適用します。 - -On Load と On Unload イベントを除き、発生したイベントがフォームイベントプロパティで選択されていなかったとしても、オブジェクトプロパティで選択されていればそのオブジェ クトメソッドの呼び出しが妨げられることはありません。言い換えれば、フォームレベルでイベントを有効あるいは無効にしても、オブジェクトイベントプロパ ティには影響ありません。 - -特定のイベントに関連するオブジェクトの数は、イベントの性質により異なります: - -* On Load イベント - On Loadオブジェクトイベントプロパティが選択されている、フォームのすべてのページのすべてのオブジェクトのオブジェクトメソッドが呼び出されます。そしてOn Loadフォームイベントプロパティが選択されていれば、フォームメソッドが呼び出されます。 -* On Activate や On Resize イベント - これらのイベントは個々のオブジェクトには適用されず、フォームに適用されるため、オブジェクトメソッドは呼び出されません。ゆえにOn Activate フォームイベントプロパティが選択されてれば、そのフォームメソッドのみが呼び出されます。 -* On Timer イベント - このイベントは事前に[SET TIMER](set-timer.md)コマンドが使用された場合にのみ生成されます。On Timer フォームイベントプロパティが選択されていると、フォームメソッドのみがイベントを受け取ります。オブジェクトメソッドは呼び出されません。 -* On Drag Over イベント - "ドロップ可"プロパティが選択されていれば、イベント中で関連するドロップ可能なオブジェクトのみオブジェクトメソッドが呼び出されます。フォームメソッドは呼び出されません。 -逆にOn Begin Drag Overイベントについては、ドラッグされているオブジェクトのオブジェクトメソッドやフォームメソッドが呼び出されます ("ドラッグ可"プロパティが選択されていれば)。 - -**警告:** 他のすべてのイベントと異なり、On Begin Drag Over やイベント中、呼び出されるメソッドは、ドラッグ&ドロップソースオブジェクトのプロセスのコンテキストで実行されます。ドラッグ&ドロップ先のオブジェクトではありません。詳細は*ドラッグ&ドロップ*を参照してください。 - -* フォームのOn Mouse Enter, On Mouse Move および On Mouse Leave イベントが選択されていると、これらのイベントはフォームオブジェクトごとに生成されます。これらがオブジェクトで有効にされている場合、イベントはこの オブジェクトに対してのみ生成されます。多層構造のオブジェクトの場合、上位レベルから下位レベルに向けてそのイベントを処理できるオブジェクトを探し、 最初に見つかったオブジェクトによりイベントが生成されます。[OBJECT SET VISIBLE](object-set-visible.md) コマンドを使用して非表示にされたオブジェクトでは、これらのイベントは生成されません。オブジェクト入力中、他のオブジェクトはマウスの位置によりこの タイプのイベントを受け取るかもしれません。 -On Mouse Move イベントはマウスカーソルが動いたときだけではなく、ユーザーが変更キー(**Shift**, **Shift Lock**, **Ctrl** または **Option**)を押したときにも発生することに注意して下さい(これにより、ドラッグ&ドロップによるコピーや移動も管理できるようになります)。 -* リスト中のレコード: [DISPLAY SELECTION](display-selection.md) / [MODIFY SELECTION](modify-selection.md)で表示されるリストフォームやサブフォームでメソッドやフォームイベントが呼び出される順序は以下のとおりです: - -| ヘッダーエリアのそれぞれのオブジェクトごとに: | -| ---------------------------------------------------------------------------------------------------------------------------------------------- | -| オブジェクトメソッドのOn Header イベント フォームメソッドのOn Header イベント レコードごとに: 詳細エリアのオブジェクトごとに: オブジェクトメソッドのOn Display Detail イベント フォームメソッドのOn Display Detail イベント | -* On Display Detail や On Headerイ ベントでダイアログボックスを表示する4Dコマンドを呼び出すことはできません。これはシンタックスエラーを起こします。以下のコマンドが関連します: [ALERT](alert.md), [DIALOG](dialog.md), [CONFIRM](confirm.md), [Request](request.md), [ADD RECORD](add-record.md), [MODIFY RECORD](modify-record.md), [DISPLAY SELECTION](display-selection.md) そして [MODIFY SELECTION](modify-selection.md)。 -* On Page Change: このイベントはフォームレベルでのみ利用でき (フォームメソッド内でのみ使用します)、フォームのカレントページが変更されるたびに生成されます ([FORM GOTO PAGE](form-goto-page.md) コマンドの呼び出しや標準ナビゲーションアクションに伴い)。ページが完全にロードされた後に呼び出されることに留意してください。 例えば (Webエリアを含む) すべてのオブジェクトが初期化された後です。このイベントはすべてのオブジェクトが初期化済みの状態で実行する必要のあるコードがあるときに有用です。ま たフォームがロードされたときにすべてのコードを実行するのではなく、特定のページが開かれたときにのみコードを実行するようにして、アプリケーションを 最適化できます。ユーザーがそのページを開かなければ、コードは実行されません。 - -以下の表はそれぞれのイベントごとにどのようにオブジェクトメソッドとフォームメソッドが呼ばれるかを概説します: - -| **イベント** | **オブジェクトメソッド** | **フォームメソッド** | **オブジェクト** | -| ------------------------ | -------------------------- | ------------ | ------------ | -| On Load | O | O | すべてのオブジェクト | -| On Unload | O | O | すべてのオブジェクト | -| On Validate | O | O | すべてのオブジェクト | -| On Clicked | O (クリック可能または入力可能なら) (\*) | O | 関係するオブジェクトのみ | -| On Double Clicked | O (クリック可能または入力可能なら) (\*) | O | 関係するオブジェクトのみ | -| On Before Keystroke | O (入力可能なら) (\*) | O | 関係するオブジェクトのみ | -| On After Keystroke | O (入力可能なら) (\*) | O | 関係するオブジェクトのみ | -| On After Edit | O (入力可能なら) (\*) | O | 関係するオブジェクトのみ | -| On Getting Focus | O (フォーカス可なら) (\*) | O | 関係するオブジェクトのみ | -| On Losing Focus | O (フォーカス可なら) (\*) | O | 関係するオブジェクトのみ | -| On Activate | X | O | None | -| On Deactivate | X | O | None | -| On Outside Call | X | O | None | -| On Page Change | X | O | None | -| On Begin Drag Over | O (ドラッグ可なら) (\*\*) | O | 関係するオブジェクトのみ | -| On Drop | O (ドロップ可なら) (\*\*) | O | 関係するオブジェクトのみ | -| On Drag Over | O (ドロップ可なら) (\*\*) | Never | 関係するオブジェクトのみ | -| On Mouse Enter | O | O | すべてのオブジェクト | -| On Mouse Move | O | O | すべてのオブジェクト | -| On Mouse Leave | O | O | すべてのオブジェクト | -| On Mouse Up | O | X | 関係するオブジェクトのみ | -| On Menu Selected | X | O | None | -| On Bound variable change | X | O | None | -| On Data Change | O (更新可なら)) (\*) | O | 関係するオブジェクトのみ | -| On Plug in Area | O | O | 関係するオブジェクトのみ | -| On Header | O | O | すべてのオブジェクト | -| On Printing Detail | O | O | すべてのオブジェクト | -| On Printing Break | O | O | すべてのオブジェクト | -| On Printing Footer | O | O | すべてのオブジェクト | -| On Close Box | X | O | None | -| On Display Detail | O | O | すべてのオブジェクト | -| On Open Detail | X (ただしリストボックス以外) | Yes | リストボックスのみ | -| On Close Detail | X (ただしリストボックス以外) | Yes | リストボックスのみ | -| On Open Detail | X | O | None | -| On Close Detail | X | O | None | -| On Resize | X | O | None | -| On Selection Change | O (\*\*\*) | O | 関係するオブジェクトのみ | -| On Load Record | X | O | None | -| On Timer | X | O | None | -| On Scroll | O | X | 関係するオブジェクトのみ | -| On Before Data Entry | O (リストボックス) | X | 関係するオブジェクトのみ | -| On Column Moved | O (リストボックス) | X | 関係するオブジェクトのみ | -| On Row Moved | O (リストボックス) | X | 関係するオブジェクトのみ | -| On Column Resize | O (リストボックスと4D View Proエリア) | X | 関係するオブジェクトのみ | -| On Header Click | O (リストボックスと4D View Proエリア) | X | 関係するオブジェクトのみ | -| On Footer Click | O (リストボックス) | X | 関係するオブジェクトのみ | -| On After Sort | O (リストボックス) | X | 関係するオブジェクトのみ | -| On Long Click | O (3D ボタン) | O | 関係するオブジェクトのみ | -| On Alternative Click | O (3D ボタンとリストボックス) | X | 関係するオブジェクトのみ | -| On Expand | O (階層リストとリストボックス) | X | 関係するオブジェクトのみ | -| On Collapse | O (階層リストとリストボックス) | X | 関係するオブジェクトのみ | -| On Delete Action | O (階層リストとリストボックス) | X | 関係するオブジェクトのみ | -| On URL Resource Loading | O (Web エリア) | X | 関係するオブジェクトのみ | -| On Begin URL Loading | O (Web エリア) | X | 関係するオブジェクトのみ | -| On URL Loading Error | O (Web エリア) | X | 関係するオブジェクトのみ | -| On URL Filtering | O (Web エリア) | X | 関係するオブジェクトのみ | -| On End URL Loading | O (Web エリア) | X | 関係するオブジェクトのみ | -| On Open External Link | O (Web エリア) | X | 関係するオブジェクトのみ | -| On Window Opening Denied | O (Web エリア) | X | 関係するオブジェクトのみ | -| On VP Ready | O (4D View Pro エリア) | O | 関係するオブジェクトのみ | -| On Row Resize | O (4D View Pro エリア) | O | 関係するオブジェクトのみ | - - -(\*) 詳細は後述の "イベント、オブジェクト、プロパティ" を参照 -(\*\*) 詳細は"*ドラッグ&ドロップ*"を参照 -(\*\*\*) リストボックス、階層リスト、サブフォーム型のオブジェクトのみがこのイベントをサポートします - -**重要:** イベントに対応するプロパティが選択されている場合にのみ、フォームやオブジェクトのメソッドが呼び出されることに留意してください。デザインモードの フォームエディタのプロパティリストでイベントを無効にすると、メソッドが呼び出される回数を減らすことができ、フォームの実行速度を最適化できます。 - -**警告:** オブジェクトのOn Load と On Unload イベントが生成されるには、オブジェクトとオブジェクトが属するフォームの両方で有効にされていなければなりません。オブジェクトのみでイベントが有効に なっている場合、イベントは生成されません。これら2つのイベントはフォームレベルでも有効にされていなければなりません。 - -#### イベント、オブジェクト、プロパティ - -イベントの性質やプロパティに基づき、オブジェクトに対してイベントが生成されるとオブジェクトメソッドが呼び出されます。ここでは、さまざまなタイプのオブジェクトを扱うにあたり、一般的に使用されるイベントについて詳細に説明します。 - -フォームエディタのプロパティリストには、選択されたオブジェクトあるいはフォームで利用可能なイベントのみが表示されることに留意してください。 - -##### クリック可能なオブジェクト - -クリック可能なオブジェクトは主にマウスで操作します。以下のオブジェクトが含まれます: - -* ブールの入力可能フィールド/変数 -* ボタン, デフォルトボタン, ラジオボタン, チェックボックス, ボタングリッド -* 3D ボタン, 3D ラジオボタン, 3D チェックボックス -* ポップアップpメニュー, 階層ポップアップメニュー, ピクチャメニュー -* ドロップダウンリスト, メニュー/ドロップダウンリスト -* スクロールエリア, 階層リスト, リストボックス, リストボックスカラム -* 非表示ボタン, ハイライトボタン, ラジオピクチャ -* サーモメータ, ルーラ, ダイアル (スライダオブジェクト) -* タブコントロール -* スプリッタ - -On Clicked や On Double Clicked オブジェクトイベントプロパティを選択したのち、[Form event](form-event.md "Form event") コマンドを使用してオブジェクト上でのクリックを検知し処理することができます。[Form event](form-event.md "Form event") コマンドはユーザアクションに応じ、On Clicked または On Double Clickedを返します。 - -**注:** 4D v14以降、テキスト(テキスト、日付、時間、数字型)が含まれる入力可能なフィールドおよび変数は On Clicked と On Double Clicked イベントを生成するようになりました。 - -両イベントがオブジェクトに対し選択されている場合、ダブルクリックが行われるとまずOn Clicked が、そしてOn Double Clicked イベントが生成されます。 - -これらすべてのオブジェクトにおいて、On Clickedイベントはマウスボタンが離されたときに生成されます。しかしいくつか例外があります: - -* 非表示ボタン - マウスがクリックされると、ボタンが離されるのを待たずにOn Clickedイベントが生成されます。 -* スライダオブジェクト (サーモメータ, ルーラ, ダイアル) - 表示フォーマットでコントロールをスライド中にオブジェクトメソッドが呼び出されるように設定されていると、On Clickedイベントはクリックが行われるとすぐに生成されます。 - -On Clicked イベントのコンテキストにおいては[Clickcount](clickcount.md) コマンドを使うことによってユーザーが行ったクリック数をテストすることができます。 - -**注:** いくつかのオブジェクトはキーボードからも操作可能です。例えばチェックボックスがフォーカスを得ると、スペースバーでオン/オフを切り替えることができます。この場合でもOn Clickedイベントは生成されます。 - -**警告:** コンボボックスはクリック可能なオブジェクトとしては扱われません。コンボボックスは入力可能なテキストエリアとして扱われ、割り当てられたドロップダウンリストにはデフォルト値が提供されます。コンボボックスの処理はOn Before Keystroke, On After Keystroke そして On Data Change イベントを使用して行います。 - -**注**: 4D v13 以降、ポップアップメニュー/ドロップダウンリストと、階層ポップアップメニューもOn Data Change を生成できるようになりました。これにより、カレントの値と異なる値が選択されたときにオブジェクトの起動を察知できるようになりました。 - -##### キーボードから入力可能なオブジェクト - -キーボードから入力可能なオブジェクトとは、キーボードを使用してデータを入力できるオブジェクトです。これらのオブジェクトではOn After Edit, On Before KeystrokeそしてOn After Keystrokeイベントを検知し、[Get edited text](get-edited-text.md)コマンドを使用して、低レベルでデータ入力をフィルタできます。 - -キーボード入力可能なオブジェクトやデータタイプには以下が含まれます: - -* 文字、テキスト、日付、時間、数値、そしてピクチャ(On After Edit のみ) など、すべての入力可能なフィールドオブジェクト -* 文字、テキスト、日付、時間、数値、そしてピクチャ(On After Edit のみ) など、すべての入力可能な変数 -* コンボボックス -* リストボックス - -**注:** 4D v14以降、テキスト(テキスト、日付、時間、数字型)が含まれる入力可能なフィールドおよび変数は On Clicked と On Double Clicked イベントを生成するようになりました。 - -**注:** 階層リストは入力可能なオブジェクトですが、このオブジェクトではOn After Edit, On Before KeystrokeそしてOn After Keystrokeは管理されません (後述の “階層リスト” の段落を参照)。 - -* On Before Keystroke と On After Keystroke**注:** On After Keystroke イベントは、一般的に On After Edit イベントで置き換えることができます(詳細後述)。 - -On Before Keystroke と On After Keystroke イベントプロパティを選択したら、**Form event code**コマンドを使用して返されるOn Before KeystrokeとOn After Keystrokeイベントを検知し、オブジェクトへのキーストロークを処理できます (詳細は[Get edited text](get-edited-text.md)コマンドの説明を参照してください。これらのイベントは[POST KEY](post-key.md)のようなユーザアクションをシミュレートするコマンドによっても生成されます。 - -キーボードを使用せず、ペーストやドラッグ&ドロップなどで行われた変更は考慮されないことに留意してください。これらのイベントを処理するためにはOn After Editを使用します。 - -**Note:** On Before KeystrokeとOn After Keystroke イベントは入力メソッド (IME) 使用時は生成されません。入力メソッドはプログラムあるいはシステムコンポーネントで、日本語や中国語など特定の文字や記号を入力するために使用されます。 -* On After Edit - -このイベントは、変更が行われた方法には関係なく、入力可能オブジェクトの内容に変更が行われるたびに生成されます。例えば: - -\- ペーストやカット、削除、キャンセルなどの標準の編集アクション -\- 値のドロップ (ペーストと同様のアクション) -\- ユーザが行ったキーボードからの入力。この場合On After EditイベントはOn Before KeystrokeとOn After Keystrokeイベントの後に生成されます。 -\- ユーザアクションをシミュレートするランゲージコマンドを使用した変更 (例 [POST KEY](post-key.md))。 - -以下のアクションはこのイベントを生成させないことに注意してください: -\- コピーやすべてのを選択のような、内容を変更しない編集アクション; -\- 値のドラッグ (コピーに該当するアクション); -\- プログラムにより行われた内容の変更、ただしユーザアクションをシミュレートするコマンドを除く。 - -このイベントはユーザアクションをコントロールするために使用できます。例えば長すぎるテキストのペーストや特定の文字のブロック、パスワードフィールドに対するカットを防ぐなどです。 -* On Selection Change: -(入力可であるかそうでないかに関わらず)テキストフィールドや変数に適用されると、このイベントはカーソルの位置が変わるたびに生成されます。例えばユーザーがマウスやキーボードの矢印キーをを使用してテキストを選択したときや、ユーザーがテキストを入力したときです。ここで[GET HIGHLIGHT](get-highlight.md)のようなコマンドを呼び出すことができます。 - -##### 変更可能オブジェクト - -更新可能オブジェクトは、マウスやキーボードを使用して値を変更することのできるデータソースを持ちます。これらはOn Clickedイベントで処理されるユーザインタフェースコントロールとしては扱われません。以下が含まれます: - -* すべての入力可フィールドオブジェクト (Blobを除く) -* すべての入力可変数 (Blob、ポインタ、配列を除く) -* コンボボックス -* 外部オブジェクト (完全なデータ入力が許可されるプラグイン) -* 階層リスト -* リストボックスとリストボックスカラム - -これらのオブジェクトはOn Data Changeイベントを受け取ります。On Data Changeオブジェクトイベントプロパティが選択されると、[Form event](form-event.md "Form event") コマンドから返されるOn Data Changeによりイベントを検知し、データソース値の変更を処理できます。イベントは、オブジェクトに結び付けられた変数が4Dにより内部的に更新され次第、生成されます (例えば、一般的に入力エリアオブジェクトがフォーカスを失った時)。 - -##### タブ可オブジェクト - -**タブ**可オブジェクトは、タブキーやクリックによりフォーカスを得るオブジェクトです。フォーカスを持つオブジェクトは、メニューやボタンへのモディファイアではない (キーボードでタイプされた) 文字を受け取ります。 - -以下を除き、すべてのオブジェクトはタブ可です: - -* 入力不可フィールドや変数 -* ボタングリッド -* 3D ボタン, 3D ラジオボタン, 3D チェックボックス -* ポップアップメニュー, 階層ポップアップメニュー -* メニュー/ドロップダウンリスト -* ピクチャメニュー -* スクロールエリア -* 非表示ボタン, ハイライトボタン, ラジオピクチャボタン -* グラフ -* 外部オブジェクト (完全なデータ入力が許可されるプラグイン) -* タブコントロール -* スプリッタ. - -On Getting Focus や On losing Focus オブジェクトイベントプロパティを選択したら、[Form event](form-event.md "Form event") コマンドから返されるOn Getting Focus や On Losing Focusを検知して、フォーカスの変更を処理できます。 - -##### 3D ボタン - -3D を使用すると詳細にグラフィックインタフェースを設定できます (f3D ボタンに関する説明はDesign Referenceマニュアルを参照してください)。汎用のイベントに加え、これらのボタンを管理するために2つの追加のイベントを使用できます: - -* On Long Click: このイベントは3D ボタンがクリックされ、一定時間以上マウスボタンが押され続けていると生成されます。理論上、このイベントが生成されるためのクリック保持時間は、システムの環境設定に設定されたダブルクリックの間隔最大時間に等しくなります。 -このイベントはすべての3D ボタンスタイル、3D ラジオボタン、3D チェックボックスで生成されます。例外は、旧世代の3D ボタンであるバックグランドオフセットタイプと、ポップアップメニューが関連付けられた3D ボタンの矢印エリアです (後述)。 -このイベントは一般的にロングクリック時にポップアップメニューを表示するために使用します。ユーザがロングクリックが有効になる時間前にマウスボタンを離すと、On Clickedが生成されます。 -* On Alternative Click: いくつかの3D ボタンスタイルには、ポップアップメニューをリンクし、矢印を表示させることができます。この矢印をクリックすると、ボタンの主たるアクションの代わりのアクションを提供するポップアップを表示します。 -4DではOn Alternative Click イベントを使用してこの動作を管理できます。このイベントはユーザが矢印をクリックすると、マウスボタンが押されてすぐに生成されます: -\- ポップアップメニューが分離されている場合、このイベントはボタン中で矢印のあるエリアがクリックされた場合のみ生成されます。 -\- ポップアップメニューがリンクされている場合、このイベントはボタン上どこをクリックしても生成されます。このタイプのボタンではOn Long Clickイベントが生成されないことに注意してください。 - -![](../assets/en/commands/pict2074286.en.png) - -以下の3D ボタン、3D ラジオボタン、および3D チェックボックスは“ポップアップメニューあり”プロパティをサポートします: なし, ツールバーボタン, べベル, 角の丸いべベルおよびOffice XPタイプ - -##### リストボックス - -リストボックス特有の様々な機能を管理するために様々なフォームイベントを使用できます: - -* On Before Data Entry: このイベントは、リストボックス中のセルが編集される直前に生成されます (入力カーソルが表示される前)。このイベントを使用して、例えば表示中と編集中で異なるテキストを表示させることができます。 -* On Selection Change: このイベントは、リストボックスの列や行の現在の選択が変更されるたびに生成されます。このイベントはレコードリストや階層リストでも生成されます。 -* On Column Moved: このイベントは、ユーザのドラッグ&ドロップでリストボックスの列が移動されたときに生成されます。ただし元の場所にドロップされた場合には生成されません。[LISTBOX MOVED COLUMN NUMBER](listbox-moved-column-number.md)コマンドは列の新しい位置を返します。 -* On Row Moved: このイベントは、ユーザのドラッグ&ドロップでリストボックスの行が移動されたときに生成されます。ただし元の場所にドロップされた場合には生成されません。 -* On Column Resize: このイベントは、ユーザーによってリストボックス中の列幅が変更されたときに生成されます。4D v16以降、このイベントは"ライブ"にトリガーされます。つまり、対象となるリストボックスあるいはカラムがリサイズされている間はずっと継続して送信されつづけます。リサイズはユーザーによって手動で行われるか、あるいはリストボックスとそのカラムがフォームウィンドウ自身のリサイズの結果リサイズされる場合も含みます(手動によるフォームのリサイズあるいは[RESIZE FORM WINDOW](resize-form-window.md)コマンドを使用したリサイズ)。 -**注:** On Column Resize イベントは"余白"カラムがリサイズされた場合にはトリガーされません(余白カラムについてのより詳細な情報については、*リサイズオプションテーマ*)を参照して下さい)。 -* On ExpandとOn Collapse: これらのイベントは階層リストボックスの行が展開されたり折りたたまれたときに生成されます。 -* On Header Click: このイベントは、リストボックス中の列ヘッダでクリックが行われると生成されます。この場合[Self](self.md) コマンドを使用すればクリックされた列ヘッダを知ることができます。右クリック (Windouws) やCtrl+クリック (Mac OS) を列や列ヘッダ上で行うと、On Clickedイベントが生成されます。[Clickcount](clickcount.md) コマンドを使うことによって、ユーザーが行ったクリックの回数をテストすることができます。 -リストボックスで**並び替え可**プロパティが選択されている場合、$0に0または-1を渡して標準の並び替えを行うかどうか指定できます: -\- $0 = 0の場合、標準の並び替えが行われます。 -\- $0 = -1の場合、標準の並び替えは行われず、ヘッダには並び替え矢印は表示されません。開発者は4Dの配列コマンドを使用して、カスタマイズされた条件に基づく並び替えを実行できます。 -**並び替え可** プロパティが選択されていない場合、$0は使用されません。 -* On Footer Click: このイベントはリストボックスやリストボックス列で利用でき、リストボックスやリストボックス列のフッターエリアがクリックされたときに生成されます。こ の場合 [OBJECT Get pointer](object-get-pointer.md) コマンドはクリックされたフッター変数へのポインターを返します。イベントは左および右クリックどちらでも生成されます。[Clickcount](clickcount.md)コマンドを使うことによって、ユーザーが行ったクリックの回数をテストすることができます。 -* On After Sort: このイベントは標準の並び替えが行われた直後に生成されます(ただしOn Header Clickイベントで$0に-1が返された場合には生成されません)。このメカニズムは、ユーザによって行われた最後の並び替えの方向を格納するために使用できます。このイベント内で[Self](self.md)コマンドは、並び替えられたカラムヘッダー変数へのポインタを返します。 -* On Delete Action: このイベントはユーザーが削除キー (DeleteやBackspaceキー) を押して、またはクリア標準アクションが割り当てられたメニュー項目 (編集メニューのクリア等) を選択して、選択された行の削除を指示したときに生成されます。このイベントはリストボックスオブジェクトレベルでのみ利用できます。4Dはイベントの生 成を行うだけであることに留意してください。4Dは項目を消去しません。実際の削除処理や事前警告の表示などは開発者の責任です。 -* On Scroll (v15からの新機能): このイベントはユーザーがリストボックス内の列またはカラムをスクロールしたときに生成されます。このイベントはユーザーのアクションの結果としてスク ロールが発生した場合にのみ生成されます: スクロールバー/カーソルの使用、マウスホイールまたはキーボードの使用、等です。[OBJECT SET SCROLL POSITION](object-set-scroll-position.md)コマンドの使用の結果スクロールした場合には生成されません。 -このイベントはスクロールアクションに関連した他の全てのユーザーイベント(On Clicked、On After Keystroke、等)の後にトリガーされます。このイベントはオブジェクトメソッドの中でのみ生成されます(フォームメソッドでは生成されません)。詳細は例題15を参照して下さい。 -* On Alternative Click (v15からの新機能): このイベントはオブジェクト配列型のリストボックスのカラムにおいて、ユーザーがウィジェットのエリプシスボタン("alternateButton" 属性)をクリックしたときに生成されます。詳細な情報については、*カラム内でのオブジェクト配列の使用* のセクションを参照して下さい。 - -「セレクション」型のリストボックスのコンテキストにおいて、二つの一般的なイベントが使用できるようになりました: - -* On Open Detail: このイベントはレコードが「セレクション」型リストボックスに関連付けられた(まだ開かれていない)詳細フォームに表示されるときに生成されます。 -* On Close Detail: このイベントは「セレクション」型リストボックスに関連付けられた詳細フォームに表示されたレコードが閉じられるときに生成されます(レコードが変更されたかどうかは関係しません)。 - -##### 階層リスト - -汎用のイベントに加え、階層リスト上で行われるアクションを処理するために複数のイベントを使用できます: - -* On Selection Change: このイベントは、マウスクリックやキーストロークで階層リスト中の選択が変更されるたびに生成されます。 -このイベントはリストボックスやレコードリストでも生成されます。 -* On Expand: このイベントは、マウスクリックやキーストロークで階層リストの要素が拡げられるたびに呼び出されます。 -* On Collapse: このイベントは、マウスクリックやキーストロークで階層リストの要素が折りたたまれるたびに呼び出されます。 -* On Delete Action: このイベントはユーザーが削除キー (DeleteやBackspaceキー) を押して、またはユーザーがクリア標準アクションが割り当てられたメニュー項目 (編集メニューのクリア等) を選択して、選択された行の削除を指示したときに生成されます。このイベントはリストボックスオブジェクトレベルでのみ利用できます。4Dはイベントの生成を行うだけであることに留意してください。4Dは項目を消去しません。実際の削除処理や事前警告の表示などは開発者の責任です。 - -これらのイベントは相互に排他的ではなく、階層リスト中で連続して生成されることがあります: -\- キーストロークに伴い (順に): - -| **イベント** | **コンテキスト** | -| --------------------- | -------------------------------- | -| On Data Change | 要素が編集された | -| On Expand/On Collapse | \-> または <-矢印キーを使用してサブリストを開いた/閉じた | -| On Selection Change | 新しい要素を選択した | -| On Clicked | キーボードを使用してリストをアクティブにした | - -\- マウスクリックに伴い (順に): - -| **イベント** | **コンテキスト** | -| ------------------------------ | ------------------------------------ | -| On Data Change | 要素が編集された | -| On Expand/On Collapse | 拡げる/折りたたむアイコンを使用してを使用してサブリストを開いた/閉じた | -| または | | -| 編集不可サブリストをダブルクリックした | | -| On Selection Change | 新しい要素を選択した | -| On Clicked / On Double Clicked | クリックまたはダブルクリックでリストをアクティブにした | - -##### ピクチャーフィールドと変数 - -* On Picture Scroll フォームイベントはユーザーが (フィールドや変数) エリア内のピクチャーをスクロールすると生成されます。ピクチャーエリアのサイズがピクチャーよりも小さく、かつ表示フォーマットが"**トランケート (中央合わせなし)**"に設定されている場合のみスクロールが可能です。この点については*ピクチャーフォーマット*を参照してください。 -このイベントはスクロールがユーザーアクション (スクロールバーやカーソル、マウスホイール、キーボードの利用) の結果として行われた場合に生成されます (キーボードによるスクロールについては*スクロールバー*参照)。[OBJECT SET SCROLL POSITION](object-set-scroll-position.md) コマンドの結果としてスクロールが行われた場合、イベントは生成されません。 -このイベントは、スクロールアクションに関連した他の全てのユーザーイベント(On Clicked、On After Keystroke、等)の後にトリガーされます。このイベントはオブジェクトメソッドの中でのみ生成されます(フォームメソッドでは生成されません)。例題14を参照してください。 -* (v16 からの新機能)ユーザーが、ピクチャーエリア(フィールドまたは変数)内でドラッグ中に左マウスボタンをリリースしたときにOn Mouse Up イベントが生成されます。このイベントは例えば、ユーザーにSVGエリア内でオブジェクトを移動、リサイズ、描画することを可能にしたい場合には有用です。 -On Mouse Upイベントが生成されると、マウスボタンがリリースされたローカルの座標を取得する事ができます。これらの座標は**MouseX** と **MouseY** *システム変数*に返されます。座標はピクチャーの左上端(0, 0)からみた位置のピクセル単位で表示されます。 -このイベントを使用する場合、フォームのステートマネージャーが非同期の可能性がある場合を管理するために、[Is waiting mouse up](is-waiting-mouse-up.md)を呼び出す必要があります。これは例えばマウスボタンがリリースされる前にフォーム上にアラートダイアログボックスが表示された場合などです。On Mouse Up イベントのより詳細な情報と使用例については、[Is waiting mouse up](is-waiting-mouse-up.md)コマンドの詳細を参照して下さい。 -**注:** ピクチャーオブジェクトの"ドラッグ可能"オプションがチェックされていた場合、On Mouse Up イベントはいかなる場合も生成されません。 - -##### サブフォーム - -サブフォームコンテナオブジェクト (親フォーム上に置かれた、ひとつのサブフォームインスタンスを含むオブジェクト) は以下のイベントをサポートします: - -* On Load と On Unload: サーブフォームを開くまた閉じる際にそれぞれ生成されます。これらのイベントは親フォームレベルでも有効にされていなければなりません。これらのイベント は親のフォームの同じイベントよりも前に生成される点に留意してください。またフォーイベント動作の原則にいたがい、サブフォームが0もしくは1ページ以 外のページに配置されている場合、これらのイベントはページが閉じられ開かれるときにに生成され、フォームが開かれ閉じられるときではないことに留意して ください。 -* On Validate: サブフォーム中でデータの受け入れを行う際。 -* On Data Change: サブフォームオブジェクト変数の値が更新されたとき。 -* On Getting Focus and On Losing Focus: サブフォームコンテナがフォーカスを得たとき、また失った時。これらのイベントはプロパティリスト中でチェックされていれば、サブフォームオブジェクトの メソッド内で生成されます。これらはサブフォームのフォームメソッドに送信されます。つまり例えば、フォーカスに応じてサブフォーム中のナビゲーションボ タンの表示を管理できます。 -サブフォームオブジェクトはそれ自身がフォーカスを持つ点に留意してください。 -* On Bound Variable Change: この特別なイベントは、親フォーム中のサブフォームにバインドされた変数に割り当てられた値が更新される (同じ値が割り当てられたばあいでも) 、かつサブフォームがカレントフォームページまたは0ページに属していれば、サブフォームメソッドのコンテキストで生成されます。サブフォームの管理につ いては*Design Reference*マニュアルを参照してください。 - -****注:** [CALL SUBFORM CONTAINER](call-subform-container.md) コマンドを使用して、サブフォーム内で生成可能なあらゆるカスタムイベントタイプを指定できます。このコマンドにより、コンテナオブジェクトメソッドを呼び出し、イベントコードを渡すことができます。 - -次のイベントはサブフォームのフォームメソッドにも受け取られます: - -* On Clicked と On Double Clicked \- サブフォーム内で生成されたこれらのイベントは、まずサブフォームのフォームメソッドに受け取られ、つぎに親フォームのフォームメソッドに受け取られます。 -* On Resize \- 親フォームにおいてサブフォームオブジェクトのサイズが変更された場合に、このイベントはサブフォームのフォームメソッドに受け取られます。 - -##### Webエリア - -Webエリアでは7つのイベントを利用できます: - -* On Begin URL Loading: このイベントは、Webエリアに新しいURLのロードを開始した時に生成されます。Webエリアに関連付けられた"URL"変数を使用してロード中のURLを知ることができます。 -**Note:** ロード中のURLは現在のURLとは異なります ([WA Get current URL](wa-get-current-url.md "WA Get current URL") コマンドの説明参照)。 -* On URL Resource Loading: このイベントは、現在のWebページに (ピクチャやフレームなど) 新しいリソースをロードするたびに生成されます。 -Webエリアに関連付けられた"Progression"変数を使用してロード状況を知ることができます。 -* On End URL Loading: このイベントは、現在のURLのすべてのリソースがロードされると生成されます。 -[WA Get current URL](wa-get-current-url.md "WA Get current URL") コマンドを使用して、ロードされたURLを知ることができます。 -* On URL Loading Error: このイベントは、URLのロード中にエラーを検出すると生成されます。 -[WA GET LAST URL ERROR](wa-get-last-url-error.md "WA GET LAST URL ERROR") コマンドを使用して、エラーに関する情報を取得できます。 -* On URL Filtering: このイベントは、[WA SET URL FILTERS](wa-set-url-filters.md "WA SET URL FILTERS") コマンドで設定されたフィルタにより、URLのロードがWebエリアによってブロックされると生成されます。 -[WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL") コマンドコマンドを使用してブロックされたURLを知ることができます。 -* On Open External Link: このイベントは、[WA SET EXTERNAL LINKS FILTERS](wa-set-external-links-filters.md "WA SET EXTERNAL LINKS FILTERS") コマンドで設定されたフィルタにより、URLのロードがWebエリアによってブロックされ、URLがカレントのシステムブラウザで開かれると生成されます。 -[WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL") コマンドコマンドを使用してブロックされたURLを知ることができます。 -* On Window Opening Denied: このイベントは、Webエリアによりポップアップウィンドウがブロックされると生成されます。4D Web エリアはポップアップウィンドウを許可しません。 -[WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL") コマンドコマンドを使用してブロックされたURLを知ることができます。 - -##### 4D View Pro エリア - -4D View Pro エリアでは以下のイベントが利用可能です。 - -* On After Edit: このイベントは、4D View Pro エリアで編集が行われたあとに生成されます。 -* On Clicked: このイベントは、4D View Pro エリアのビューポート(ヘッダー、スクロールバー、ツールバー以外の部分)でクリックが発生したときに生成されます。 -* On Column Resize: このイベントはカラムの幅がユーザーによって変更されたときに生成されます。 -* On Double Clicked: このイベントは4D View Pro エリア内でダブルクリックが発生したときに生成されます。 -* On Header Click:このイベントはカラムヘッダーまたは行ヘッダーでクリックが発生したときに生成されます。 -* On Row Resize: このイベントは行の高さがユーザーによって変更されたときに生成されます。 -* On Selection Change: このイベントは行またはカラムのカレントセレクションが変更されたときに生成されます。 -* On VP Ready このイベントは4D View Pro エリアのロードが終わった時に生成されます。このイベントはエリアの初期化コードを書く際に必要になります。 - -これらのイベントの詳細な情報については、*On VP Ready フォームイベント* の章を参照してください。 - -#### 例題 1 - -この例題ではレコード更新日をOn Validateイベントで自動的に割り当てる例を示します: - -```4d -  // フォームメソッド Form method [#Current_title_incode] Sum Form event code - Case of -  // ... -    :(Form event code=On Validate) -       [aTable]Last Modified On:=Current date - End case -``` - -#### 例題 2 - -この例題では、ドロップダウンリスト処理 (初期化, ユーザクリック, オブジェクトのリリース) をオブジェクトメソッドにカプセル化します: - -```4d -  // asBurgerSize ドロップダウンリストのオブジェクトメソッド - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asBurgerSize;3) -       asBurgerSize{1}:="Small" -       asBurgerSize{1}:="Medium" -       asBurgerSize{1}:="Large" -    :(Form event code=On Clicked) -       If(asBurgerSize#0) -          ALERT(asBurgerSize{asBurgerSize}+" バーガーが選択されました。") -       End if -    :(Form event code=On Unload) -       CLEAR VARIABLE(asBurgerSize) - End case -``` - -#### 例題 3 - -この例題ではオブジェクトメソッドで、ピクチャのみを受け付けるフィールドのドラッグ&ドロップ処理の方法を示します: - -```4d -  // [aTable]aPicture ピクチャ フィールドオブジェクトメソッド - Case of -    :(Form event code=On Drag Over) -  // ドラッグ&ドロップ処理が開始され、マウスが現在フィールド上にある -  // ソースオブジェクトに関する情報を取得 -       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess) -  // ソースプロセスの番号をテストする必要はない -  // 実行されているオブジェクトメソッドは同じプロセス内で動作している -       $vlDataType:=Type($vpSrcObject->) -  // ソースデータはピクチャか (フィールド, 変数または配列)? -       If(($vlDataType=Is picture)|($vlDataType=Picture array)) -  // 真ならドラッグを受け入れる -          $0:=0 -       Else -  // 偽ならドラッグを拒否する -          $0:=-1 -       End if -    :(Form event code=On Drop) -  // ソースデータがオブジェクトにドロップされたのでオブジェクトにコピーする -  // ソースオブジェクトに関する情報を取得 -       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess) -       $vlDataType:=Type($vpSrcObject->) -       Case of -  // ソースオブジェクトはピクチャフィールドまたは変数 -          :($vlDataType=Is picture) -  // ソースオブジェクトは同じプロセスから来ているか (つまり同じウィンドウのフォームか)t? -             If($lSrcProcess=Current process) -  // そうならソースをコピー -                [aTable]aPicture:=$vpSrcObject-> -             Else -  // そうでない場合、ソースオブジェクトを利用できるか? -                If(Is a variable($vpSrcObject)) -                   &NBSP; // 真ならソースプロセスから値を取得 -                   GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject->;$vgDraggedPict) -                   [aTable]aPicture:=$vgDraggedPict -                Else -  // 偽ならCALL PROCESSを使用してソースプロセスから値を取得 -                End if -             End if -  // ソースオブジェクトがピクチャ配列 -          :($vlDataType=Picture array) -  // ソースオブジェクトは同じプロセスにあるか (つまり同じプロセスの同じウィンドウか)? -             If($lSrcProcess=Current process) -  // 真ならソース値をコピー -                [aTable]aPicture:=$vpSrcObject->{$vlSrcElement} -             Else -  // そうでなければソースプロセスから値を取得 -                GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject -                ->{$vlSrcElement};$vgDraggedPict) -                [aTable]aPicture:=$vgDraggedPict -             End if -       End case - End case -``` - -**注:** On Drag Over や On Drop イベントを使用する他の例題は、*\_o\_DRAG AND DROP PROPERTIES* コマンドの例題を参照してください。 - -#### 例題 4 - -この例題はフォームメソッドのテンプレートです。出力フォームとしてサマリレポートがフォームを使用する際に発生するイベントを示しています: - -```4d -  // 概要レポートの出力フォームとして使用されているフォームのフォームメソッド - $vpFormTable:=Current form table - Case of -  // ... -    :(Form event code=On Header) -  // ヘッダエリアの印刷開始 -       Case of -          :(Before selection($vpFormTable->)) -  // 最初のブレークヘッダ用のコード -          :(Level=1) -  // ヘッダブレークレベル 1 用のコード -          :(Level=2) -  // ヘッダブレークレベル 2 用のコード -  // ... -       End case -    :(Form event code=On Printing Detail) -  // レコードの印刷開始 -  // レコード毎のコードを記述 -    :(Form event code=On Printing Break) -  // ブレークエリアの印刷開始 -       Case of -          :(Level=0) -  // ブレークレベル0 用のコード -          :(Level=1) -  // レークレベル1 用のコード -  // ... -       End case -    :(Form event code=On Printing Footer) -       If(End selection($vpFormTable->)) -  // 最後のフッタ用のコード -       Else -  // フッタ用のコード -       End if - End case -``` - -#### 例題 5 - -この例題は[DISPLAY SELECTION](display-selection.md) または [MODIFY SELECTION](modify-selection.md) で表示されるフォームで発生するイベントを処理するメソッドのテンプレートです。説明的にするため、フォームウィンドウのタイトルバーにイベントの説明が表示されます: - -```4d -  // フォームメソッド - Case of -    :(Form event code=On Load) -       $vsTheEvent:="フォームが表示されようとしている" -    :(Form event code=On Unload) -       $vsTheEvent:="出力フォームを抜け、スクリーンから消えようとしている" -    :(Form event code=On Display Detail) -       $vsTheEvent:="表示中のレコード #"+String(Selected record number([TheTable])) -    :(Form event code=On Menu Selected) -       $vsTheEvent:="メニュー項目が選択された" -    :(Form event code=On Header") -       $vsTheEvent:="ヘッダエリアが描画されようとしている" -    :(Form event code=On Clicked") -       $vsTheEvent:="レコードがクリックされた" -    :(Form event code=On Double Clicked") -       $vsTheEvent:="レコードがダブルクリックされた" -    :(Form event code=On Open Detail) -       $vsTheEvent:="レコード #"+String(Selected record number([TheTable]))+" がダブルクリックされた" -    :(Form event code=On Close Detail) -       $vsTheEvent:="出力フォームに戻る" -    :(Form event code=On Activate) -       $vsTheEvent:="フォームのウィンドウが最前面になった" -    :(Form event code=On Deactivate) -       $vsTheEvent:="フォームのウィンドウが最前面でなくなった" -    :(Form event code=On Outside Call) -       $vsTheEvent:="プロセスの呼び出しを受信した" -    Else -       $vsTheEvent:="発生したイベント #"+String(Form event) - End case - SET WINDOW TITLE($vsTheEvent) -``` - -#### 例題 6 - -On Before Keystroke と On After Keystroke イベントを処理する方法は[Get edited text](get-edited-text.md)、[Keystroke](keystroke.md)、そして[FILTER KEYSTROKE](filter-keystroke.md)コマンドの説明を参照してください。 - -#### 例題 7 - -この例題は、スクロールエリアでクリックとダブルクリックを同様に扱う方法を示しています: - -```4d -  // asChoices スクロール可能エリアオブジェクトメソッド - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asChoices;...) -  // ... -       asChoices:=0 -    :((Form event code=On Clicked)|(Form event code=On Double Clicked)) -       If(asChoices#0) -  // 項目がクリックされたので、何らかの処理を行う -  // ... -       End if -  // ... - End case -``` - -#### 例題 8 - -この例題では、クリックとダブルクリックで異なるレスポンスをする方法を示します。要素0を使用して選択された項目を追跡しています: - -```4d -  // asChoices scrollable area object method - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asChoices;...) -  // ... -       asChoices:=0 -       asChoices{0}:="0" -    :(Form event code=On Clicked) -       If(asChoices#0) -          If(asChoices#Num(asChoices)) -  // 新しい項目がクリックされたので何かを行う -  // ... -  // 次回のために、新しく選択された要素を保存 -             asChoices{0}:=String(asChoices) -          End if -       Else -          asChoices:=Num(asChoices{0}) -       End if -    :(Form event code=On Double Clicked) -       If(asChoices#0) -  // 項目がダブルクリックされたのでここで何かを行う -       End if -  // ... - End case -``` - -#### 例題 9 - -この例題では、 On Getting Focus と On Losing Focusを使用して、フォームメソッド内でステータス情報を管理します: - -```4d -  // [Contacts];"Data Entry" フォームメソッド - Case of -    :(Form event code=On Load) -       var vtStatusArea : Text -       vtStatusArea:="" -    :(Form event code=On Getting Focus) -       RESOLVE POINTER(Focus object;$vsVarName;$vlTableNum;$vlFieldNum) -       If(($vlTableNum#0)&($vlFieldNum#0)) -          Case of -             :($vlFieldNum=1) // Last name フィールド -                vtStatusArea:="Enter the Last name of the Contact; it will be capitalized automatically" -  // ... -             :($vlFieldNum=10) // Zip Code フィールド -                vtStatusArea:="Enter a 5-digit zip code; it will be checked and validated automatically" -  // ... -          End case -       End if -    :(Form event code=On Losing Focus) -       vtStatusArea:="" -  // ... - End case -``` - -#### 例題 10 - -この例題では、レコードデータ入力に使用されるフォームで、ウィンドウを閉じる際の処理を示します: - -```4d -  // 入力フォームのフォームメソッド - $vpFormTable:=Current form table - Case of -  // ... -    :(Form event code=On Close Box) -       If(Modified record($vpFormTable->)) -          CONFIRM("このレコードは更新されています。保存しますか?") -          If(OK=1) -             ACCEPT -          Else -             CANCEL -          End if -       Else -          CANCEL -       End if -  // ... - End case -``` - -#### 例題 11 - -この例題では、文字フィールドが更新されるたびに、1文字目を大文字に、それ以外を小文字に変換する方法を示します: - -```4d -  // [Contacts]First Name Object method - Case of -  // ... -    :(Form event code=On Data Change) -       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+ -       Lowercase(Substring([Contacts]First Name;2)) -  // ... - End case -``` - -#### 例題 12 - -この例題では、文字フィールドが更新されるたびに、1文字目を大文字に、それ以外を小文字に変換する方法を示します: - -```4d -  // [Contacts]First Name Object method - Case of -  // ... -    :(Form event code=On Data Change) -       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+ -       Lowercase(Substring([Contacts]First Name;2)) -  // ... - End case -``` - -#### 例題 13 - -以下の例題では階層リストで削除アクションを管理する方法を示します: - -```4d - ... // 階層リストメソッド -:(Form event code=On Delete Action) - ARRAY LONGINT($itemsArray;0) - $Ref:=Selected list items(<>HL;$itemsArray;*) - $n:=Size of array($itemsArray) -  - Case of -    :($n=0) -       ALERT("項目が選択されていません。") -       OK:=0 -    :($n>=1) -       CONFIRM("選択された項目を削除しますか?") - End case -  - If(OK=1) -    For($i;1;$n) -       DELETE FROM LIST(<>HL;$itemsArray{$i};*) -    End for - End if -``` - -#### 例題 14 - -この例題ではOn Scroll フォームイベントを使用してフォーム中の2つのピクチャーを同期します。以下のコードを"satellite" のオブジェクトメソッドに記述します: - -```4d - Case of -    :(Form event code=On Scroll) -  // 左側のピクチャー位置を取得 -       OBJECT GET SCROLL POSITION(*;"satellite";vPos;hPos) -  // 右側のピクチャーに適用 -       OBJECT SET SCROLL POSITION(*;"plan";vPos;hPos;*) - End case -``` - -結果: - -#### 例題 15 - -リストボックスで選択されたセルの周りに赤い長方形を描画し、リストボックスがユーザーによって垂直方向にスクロールされた場合には、その長方形を一緒に移動させたい場合を考えます。その場合、リストボックスのオブジェクトメソッドに対して以下のように書きます: - -```4d - Case of -  -    :(Form event code=On Clicked) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT SET VISIBLE(*;"RedRect";True)&NBSP; //赤い長方形を初期化 -       OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -  -    :(Form event code=On Scroll) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT GET COORDINATES(*;"LB1";$xlb1;$ylb1;$xlb2;$ylb2) -       $toAdd:=LISTBOX Get headers height(*;"LB1") //オーバーラップしないためにヘッダーの高さを取得 -       If($ylb1+$toAdd<$y1)&($ylb2>$y2) //リストボックス内にいるとき -  //単純かのため、ここではヘッダーのみを扱います -  //実際にはスクロールバーに加え、 -  //水平方向のクリッピングも管理しなければなりません。 -          OBJECT SET VISIBLE(*;"RedRect";True) -          OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -       Else -          OBJECT SET VISIBLE(*;"RedRect";False) -       End if -  - End case -``` - -結果として、赤い長方形はリストボックスのスクロールに沿って移動します: - -![](../assets/en/commands/pict1900395.en.png) - -#### 参照 - -[CALL SUBFORM CONTAINER](call-subform-container.md) -[Current form table](current-form-table.md) -[FILTER KEYSTROKE](filter-keystroke.md) -[FORM Event](form-event.md) -[Get edited text](get-edited-text.md) -[Keystroke](keystroke.md) -[POST OUTSIDE CALL](post-outside-call.md) -[SET TIMER](set-timer.md) - -#### プロパティ - -| | | -| --- | --- | -| コマンド番号 | 388 | -| スレッドセーフである | ✗ | - - diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md deleted file mode 100644 index 2d21baa054adb3..00000000000000 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -id: form-event -title: FORM Event -slug: /commands/form-event -displayed_sidebar: docs ---- - -**FORM Event** : Object - -| 引数 | 型 | | 説明 | -| --- | --- | --- | --- | -| 戻り値 | Object | ← | イベントオブジェクト | - - - -#### 説明 - -**FORM Event** は、発生したフォームイベントに関する情報を格納しているオブジェクトを返します。通常、**FORM Event** はフォームまたはオブジェクトメソッド内にて使用します。 - -**返されるオブジェクト** - -返されるオブジェクトは、それぞれ以下のメインのプロパティを格納しています: - -| **プロパティ** | **型** | **詳細** | -| ----------- | ----- | --------------------------------------------------------- | -| objectName | テキスト | イベントをトリガーしているオブジェクト名。フォームによってトリガーされている場合には含まれていません。 | -| code | 倍長整数 | フォームイベントの数値。[Form event code](../commands/form-event-code.md) を参照のこと。 | -| description | テキスト | フォームイベント名(*例:* "On After Edit") | - -例えば、ボタンをクリックした場合、オブジェクトには以下のプロパティが格納されます: - -```RAW -{"code":4,"description":"On Clicked","objectName":"Button2"} -``` - -イベントオブジェクトには、イベントが発生したオブジェクトによっては追加のプロパティが含まれていることがあります。これは以下のオブジェクトで生成された*eventObj* オブジェクトが対象です: - -* リストボックスまたはカラムオブジェクト。詳細は*developer.4d.com でのリストボックスのドキュメント* を参照してください。 -* 4D View Pro エリア。詳細は*On VP Ready フォームイベント* を参照してください。 - -**注:** カレントのイベントが何もない場合、**FORM Event** はnull オブジェクトを返します。 - -#### 例題 1 - -ボタン上でOn Clicked イベントを管理したい場合を考えます: - -```4d - If(FORM Event.code=On Clicked) -    ... - End if -``` - -#### 例題 2 - -カラムオブジェクト名に、実際のデータクラスの属性名を以下のように設定した場合: - -![](../assets/en/commands/pict4843820.en.png) - -On Header Click イベントを使用してカラムをソートすることができます: - -```4d - Form.event:=FORM Event - Case of -    :(Form event code=On Header Click) -       if(Form.event.columnName="lastname") -          Form.employees:=Form.employees.orderBy(Form.event.columnName+", firstname") -       End if - End case -``` - -#### 例題 3 - -リストボックスオブジェクトのOn Display Details イベントが発生したときに、*メタ情報式* プロパティに設定したメソッドを実行したい場合を考えます: - -![](../assets/en/commands/pict4843812.en.png) - -*setColor* メソッドの中身です: - -```4d - var $event;$0;$meta : Object - $event:=[#current_title_incod] - $meta:=New object -  - Case of -    :($event.code=On Display Detail) -       If($event.isRowSelected) -          $meta.fill:="lightblue" -       End if - End case - $0:=$meta -``` - -その結果、行が選択された際のリストボックスは以下のようになります: - -![](../assets/en/commands/pict4843808.en.png) - -#### 参照 - -[Form event code](../commands/form-event-code.md) - -#### プロパティ - -| | | -| --- | --- | -| コマンド番号 | 1606 | -| スレッドセーフである | ✓ | - - diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md deleted file mode 100644 index fe52b02550e6b3..00000000000000 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *name* {; *} ) : Integer - -| 引数 | 型 | | 説明 | -| --- | --- | --- | --- | -| name | Text | → | プロセス番号を取り出すプロセス名 | -| * | Operator | → | 4D Serverのプロセス番号を返す | -| 戻り値 | Integer | ← | プロセス番号 | - - - -#### 説明 - -Process numberは、*name*引数に指定した名前を持つプロセス番号を返します。プロセスが見つからない場合には、Process numberは0を返します。 - -オプションの引数 \* を指定すると、サーバ上で実行されたプロセス(ストアドプロシージャ)のプロセスIDを4D Clientで取得することができます。この場合、負の値が返されます。[GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE")や[SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE")コマンドを使用する際には、このオプションが特に役立ちます。詳細はそれぞれのコマンドの説明を参照してください。 - -サーバマシン上のプロセスから引数 *\** を指定してこのコマンドを実行すると、正の値が返されます。 - -#### 例題 - -独立したプロセスで実行するカスタムフローティングウインドウを作成します。このプロセスでは、デザインモードでやり取りができる独自のツールを実装します。例えば、キーワードの階層リストで項目を選択すると、デザインモードの最前面ウインドウにテキストを貼り付けるようなツール。これを実行するにはペーストボードを使用できますが、貼り付けイベントはデザインプロセスの内部で発生する必要があります。以下の関数は、デザインプロセス(が実行している場合)のプロセス番号を返します: - -```4d -  // Design process number プロジェクトメソッド -  // Design process number -> 倍長整数 -  // Design process number -> デザインプロセス番号 -  - $0:=Process number("デザインプロセス") -  // Note: プロセス名が変更されると、このコードは利用できなくなります -``` - -この関数を使用して、下記のプロジェクトメソッドは、引数として受け取ったテキストをデザインモードの最前面のウインドウに貼り付けます(適用可能な場合): - -```4d -  // PASTE TEXT TO DESIGN プロジェクトメソッド -  // PASTE TEXT TO DESIGN ( テキスト) -  // PASTE TEXT TO DESIGN ( デザインモードの最前面ウィンドウに張り付けるテキスト) -  - var $1 : Text - var $vlDesignPID;$vlCount : Integer -  - $vlDesignPID:=Design process number - If($vlDesignPID #0) -  // ペーストボードにテキストを置く -    SET TEXT TO PASTEBOARD($1) -  // Ctrl-V / Cmd-V イベントをポスト -    POST KEY(Character code("v");Command key mask;$vlDesignPID) -  // DELAY PROCESSを繰り返し呼び出して、スケジューラに -  // デザインプロセスへのイベントを渡すチャンスを与える -    For($vlCount;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### 参照 - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### プロパティ - -| | | -| --- | --- | -| コマンド番号 | 372 | -| スレッドセーフである | ✓ | - - diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md deleted file mode 100644 index fe52b02550e6b3..00000000000000 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *name* {; *} ) : Integer - -| 引数 | 型 | | 説明 | -| --- | --- | --- | --- | -| name | Text | → | プロセス番号を取り出すプロセス名 | -| * | Operator | → | 4D Serverのプロセス番号を返す | -| 戻り値 | Integer | ← | プロセス番号 | - - - -#### 説明 - -Process numberは、*name*引数に指定した名前を持つプロセス番号を返します。プロセスが見つからない場合には、Process numberは0を返します。 - -オプションの引数 \* を指定すると、サーバ上で実行されたプロセス(ストアドプロシージャ)のプロセスIDを4D Clientで取得することができます。この場合、負の値が返されます。[GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE")や[SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE")コマンドを使用する際には、このオプションが特に役立ちます。詳細はそれぞれのコマンドの説明を参照してください。 - -サーバマシン上のプロセスから引数 *\** を指定してこのコマンドを実行すると、正の値が返されます。 - -#### 例題 - -独立したプロセスで実行するカスタムフローティングウインドウを作成します。このプロセスでは、デザインモードでやり取りができる独自のツールを実装します。例えば、キーワードの階層リストで項目を選択すると、デザインモードの最前面ウインドウにテキストを貼り付けるようなツール。これを実行するにはペーストボードを使用できますが、貼り付けイベントはデザインプロセスの内部で発生する必要があります。以下の関数は、デザインプロセス(が実行している場合)のプロセス番号を返します: - -```4d -  // Design process number プロジェクトメソッド -  // Design process number -> 倍長整数 -  // Design process number -> デザインプロセス番号 -  - $0:=Process number("デザインプロセス") -  // Note: プロセス名が変更されると、このコードは利用できなくなります -``` - -この関数を使用して、下記のプロジェクトメソッドは、引数として受け取ったテキストをデザインモードの最前面のウインドウに貼り付けます(適用可能な場合): - -```4d -  // PASTE TEXT TO DESIGN プロジェクトメソッド -  // PASTE TEXT TO DESIGN ( テキスト) -  // PASTE TEXT TO DESIGN ( デザインモードの最前面ウィンドウに張り付けるテキスト) -  - var $1 : Text - var $vlDesignPID;$vlCount : Integer -  - $vlDesignPID:=Design process number - If($vlDesignPID #0) -  // ペーストボードにテキストを置く -    SET TEXT TO PASTEBOARD($1) -  // Ctrl-V / Cmd-V イベントをポスト -    POST KEY(Character code("v");Command key mask;$vlDesignPID) -  // DELAY PROCESSを繰り返し呼び出して、スケジューラに -  // デザインプロセスへのイベントを渡すチャンスを与える -    For($vlCount;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### 参照 - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### プロパティ - -| | | -| --- | --- | -| コマンド番号 | 372 | -| スレッドセーフである | ✓ | - - diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md deleted file mode 100644 index b18ddab048bb8c..00000000000000 --- a/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nome* {; *} ) : Integer - -| Parâmetro | Tipo | | Descrição | -| --- | --- | --- | --- | -| nome | Text | → | Nome do processo do qual recuperar o número | -| * | Operator | → | Devolver o número do processo servidor | -| Resultado | Integer | ← | Número de processo | - - - -#### Descrição - -Process number devolve o número do processo cujo nome é passado em *nome*. Se não se encontra nenhum processo, Process number devolve 0. - -O parâmetro opcional *\** lhe permite recuperar, a partir de 4D Client, o número de um processo que se está executando no servidor (um procedimento armazenado). Neste caso, o valor devolvido é negativo. Esta opção é particularmente útil quando se utilizam os comandos [GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE") e [SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE"). Para maior informação, consulte as descrições destes comandos. - -Se o comando se executa com o parâmetro *\** desde um processo na máquina servidor, o valor devolvido é positivo. - -#### Exemplo - -Você pode criar uma paleta flutuante, que é executado em um processo separado, em que você implementou suas próprias ferramentas para interagir com o ambiente Desenho. Por exemplo, quando você seleciona um elemento em uma lista hierárquica de palavras-chave, você deseja colar algum texto na janela no primeiro plano do ambiente Desenho. Para fazer isso, você pode usar a área de transferência, mas o evento de colar deve ocorrer dentro do processo Desenho. A função a seguir retorna o número do processo Desenho (se ativo): - -```4d -  // Método de projeto Número processo Desenho -  // Número processo Desenho -> Inteiro longo -  // Número processo Desenho -> Número do processo de Desenho -  - $0:=Process number("Processo Desenho") -  // Nota: Este pode não funcionar no futuro se a fonte muda -``` - -Com esta função, o método de projeto listado cola o texto recebido como parâmetro na janela do primeiro plano no ambiente Desenho (se aplicado): - -```4d -  // Método de projeto COLAR TEXTO EM DESENHO -  // PEGAR TEXTO EM DESENHO ( Text ) -  //PEGAR TEXTO EM DESENHO (Texto a pegar na janela de Desenho do primeiro plano) -  - var $1 : Text - var $vlDesenhoPID;$vlCont : Integer -  - $vlDiseñoPID:=Numero processo Desenho - If($vlDesenhoPID&NBSP;#&NBSP;0) -  // Coloque o texto na área de transferência -    SET TEXT TO PASTEBOARD($1) -  // Gerar um evento Ctrl-V / Comando-V -    POST KEY(ASCII("v");Command key mask;$vlDesenhoPID) -  // Chamar repetidamente DELAY PROCESS para que o temporizador possa passar -  // sobre o evento ao processo Desenho -    For($vlCont;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Ver também - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propriedades - -| | | -| --- | --- | -| Número do comando | 372 | -| Thread-seguro | ✓ | - - diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md deleted file mode 100644 index e7d0c9b4845819..00000000000000 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event-code.md +++ /dev/null @@ -1,861 +0,0 @@ ---- -id: form-event-code -title: Form event code -slug: /commands/form-event-code -displayed_sidebar: docs ---- - -**Form event code** : Integer - -| Parâmetro | Tipo | | Descrição | -| --- | --- | --- | --- | -| Resultado | Integer | ← | Número do evento do formulário | - - - -#### Compatibilidade - -**Form event code** era chamado **Form event** em versões anteriores de 4D. Foi renomeado para maior claridade quando o comando [FORM Event](form-event.md), que retorna um objeto, foi adicionado. - -#### Descrição - -**Form event code** retorna um valor númerico que identifica o tipo de evento de formulário que acaba de ocorrer. Geralmente, **Form event code** são utilizados em um método formulário ou em um método objeto. - -4D oferece constantes predefinidas (localizadas no tema *Form event*) para comparar os valores retornados pelo comando **Form event code**. - -Certos eventos são genéricos (gerados por todo tipo de objeto) e outros são específicos a um tipo de objeto particular. - -| Constante | Tipo | Valor | Comentário | -| ------------------------ | ------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| On Load | Inteiro longo | 1 | O formulário está prestes a ser exibido ou impresso | -| On Mouse Up | Inteiro longo | 2 | (Apenas imagens) O usuário acabou de soltar o boto esquerdo do mouse em um objeto Imagem | -| On Validate | Inteiro longo | 3 | A entrada de dados foi validada | -| On Clicked | Inteiro longo | 4 | Ocorre um clique sobre um objeto | -| On Header | Inteiro longo | 5 | O cabeçalho do formulário está prestes a ser impresso ou exibido | -| On Printing Break | Inteiro longo | 6 | Uma das áreas de quebra do formulário está prestes a ser impressa | -| On Printing Footer | Inteiro longo | 7 | A área do rodapé do formulário está prestes a ser impressa | -| On Display Detail | Inteiro longo | 8 | Um registro está prestes a ser mostrado na lista | -| On VP Ready | Inteiro longo | 9 | (*apenas em áreas 4D View Pro*) O carregamento da área 4D View Pro está completo | -| On Outside Call | Inteiro longo | 10 | O formulário recebe um chamado [POST OUTSIDE CALL](post-outside-call.md) | -| On Activate | Inteiro longo | 11 | A janela de formulário vira a janela atual. | -| On Deactivate | Inteiro longo | 12 | A janela do formulário deixa de ser a janela atual | -| On Double Clicked | Inteiro longo | 13 | Ocorreu clique duas vezes num objeto | -| On Losing Focus | Inteiro longo | 14 | Um objeto do formulário está perdendo o foco | -| On Getting Focus | Inteiro longo | 15 | Um objeto do formulário tem o foco | -| On Drop | Inteiro longo | 16 | Os dados foram liberados no objeto | -| On Before Keystroke | Inteiro longo | 17 | Um caractere está prestes a entrar no objeto que tem o foco. [Get edited text](get-edited-text.md) retorna o texto de objeto sem o caractere. | -| On Menu Selected | Inteiro longo | 18 | Um comando do menu foi selecionado | -| On Plug in Area | Inteiro longo | 19 | Um objeto externo solicitou que fosse executado o seu método de objeto | -| On Data Change | Inteiro longo | 20 | Os dados do objeto foram modificados | -| On Drag Over | Inteiro longo | 21 | Os dados podem ser liberados num objeto
| -| On Close Box | Inteiro longo | 22 | Um clique ocorreu na caixa de fechar a janela. | -| On Printing Detail | Inteiro longo | 23 | A área de detalhe do formulário está prestes a ser impressa | -| On Unload | Inteiro longo | 24 | O formulário está prestes a ser fechado e liberado | -| On Open Detail | Inteiro longo | 25 | O formulário detalhado associado com o formulário de saída ou com o listbox está aponto de ser aberto | -| On Close Detail | Inteiro longo | 26 | O formulário de entrada é fechado e regressa ao formulário de saída | -| On Timer | Inteiro longo | 27 | O número de tiques definido pelo comando [SET TIMER](set-timer.md) passou | -| On After Keystroke | Inteiro longo | 28 | Um caractere que vai ser inserido no objeto que tem o foco. [Get edited text](get-edited-text.md) retorna o texto do objeto, incluindo esse caractere | -| On Resize | Inteiro longo | 29 | A janela do formulário é redimensionada ou o objeto subformulário é redimensionado (neste caso o evento é gerado no método formulário do subformulário) | -| On After Sort | Inteiro longo | 30 | (*List box only*) Uma ordenação padrão foi realizada em uma list box coluna | -| On Selection Change | Inteiro longo | 31 | List box: é modificada a seleção atual de linhas ou colunasRegistros na lista: é modificado o registro atual ou a seleção atual de linhas num formulário listado ou num subformulárioLista hierarquica: a seleção na lista é modificada após fazer clique ou pressionar uma teclaVariável ou campo editável (somente v12.x): a seleção de texto ou a posição do ponteiro na área é modificada ao clicar ou pressionar uma tecla. | -| On Column Moved | Inteiro longo | 32 | (*List box apenas*) O usuário move uma coluna de list box com arrastar e soltar. | -| On Column Resize | Inteiro longo | 33 | (*List box apenas*) A largura de uma coluna de list box é modificado por um usuário com o mouse | -| On Row Moved | Inteiro longo | 34 | (Somente List Box) O usuário move uma fileira de uma list box usando arrastar e soltar | -| On Mouse Enter | Inteiro longo | 35 | O ponteiro do mouse ingressa à área gráfica de um objeto | -| On Mouse Leave | Inteiro longo | 36 | O ponteiro do mouse sai da área gráfica de um objeto | -| On Mouse Move | Inteiro longo | 37 | O ponteiro do mouse se move (pelo menos um pixel). Ou quando se pressiona uma tecla de modificação (Ctrl, Alt, Caps Lock). Se o evento está selecionado para um objeto unicamente, é gerado só quando o cursor se encontra dentro da área gráfica do objeto | -| On Alternative Click | Inteiro longo | 38 | (*3D buttons only*) A área “flecha” do botão 3D é clicado.*List boxes*: nuna coluna de um array objeto, um botão de reticências (atributo "alternateButton") recebe um clique**Note**: Botões de Elipse estão disponíveis apenas nas versões v15 ou superior. | -| On Long Click | Inteiro longo | 39 | (Somente botões 3D) Um botão 3D é clicado e o botão do mouse permanece pressionado por um instante | -| On Load Record | Inteiro longo | 40 | No modo de entrada em lista, enquanto é modificado, um registro é carregado (o usuário clica numa linha do registro e um campo passa ao modo de edição) | -| On Before Data Entry | Inteiro longo | 41 | (*List box only*) Uma célula de list box está prestes a mudar para modo editar | -| On Header Click | Inteiro longo | 42 | (Somente list box) Ocorre um clique num cabeçalho de coluna do list box | -| On Expand | Inteiro longo | 43 | (Somente listas hierarquicas ) Um elemento da lista hierarquica foi expandido fazendo clique ou utilizando uma tecla | -| On Collapse | Inteiro longo | 44 | (Listas hierárquicas apenas) Um elemento da lista hierárquica foi contraído através de um clique ou uma tecla. | -| On After Edit | Inteiro longo | 45 | Os conteúdos do objeto editável que tem o foco foram modificados. | -| On Begin Drag Over | Inteiro longo | 46 | Um objeto está sendo arrastado | -| On Begin URL Loading | Inteiro longo | 47 | (*apenas Web areas*) Uma nova área URL é carrega na área WEb | -| On URL Resource Loading | Inteiro longo | 48 | (Somente áreas web) Um novo recurso é carregado na área web | -| On End URL Loading | Inteiro longo | 49 | (Somente áreas web) Todos os recursos da URL foram carregados | -| On URL Loading Error | Inteiro longo | 50 | (Somente áreas web) Ocorreu um erro quando a URL estava sendo carregada | -| On URL Filtering | Inteiro longo | 51 | (Somente áreas web) Uma URL foi bloqueada pela área web | -| On Open External Link | Inteiro longo | 52 | (Somente áreas web) Foi aberta uma URL externa no navegador | -| On Window Opening Denied | Inteiro longo | 53 | Uma janela pop-up foi bloqueada | -| On bound variable change | Inteiro longo | 54 | A variável relacionada a um subformulário é modificada. | -| On Page Change | Inteiro longo | 56 | A página atual do formulário foi mudada | -| On Footer Click | Inteiro longo | 57 | (Somente List box) um clique ocorreu no pé de uma list box ou coluna de list box | -| On Delete Action | Inteiro longo | 58 | (Listas hierárquicas e List box somente) O usuário é solicitado a remover um item | -| On Scroll | Inteiro longo | 59 | O usuário desloca o conteúdo de um campo ou de uma variável imagem utilzando o mouse ou uma tecla. | -| On Row Resize | Inteiro longo | 60 | *(Apenas em 4D View Pro)* A altura da linha é modificada por um usuário com o mouse | -| On VP Range Changed | Inteiro longo | 61 | O intervalo de células 4D View Pro mudou (por exemplo, o cálculo de uma fórmula, o valor eliminado de uma célula, etc.) | - -**Nota:** os eventos específicos de formulários de saída não podem utilizar-se em **formularios projeto**. Estes são: On Display Detail, On Open Detail, On Close Detail, On Load Record, On Header, On Printing Detail, On Printing Break, On Printing Footer. - -#### Eventos e Métodos - -Quando ocorre um evento de formulário, 4D efetua as seguintes ações: - - Primeiro, examina os objetos do formulário e chama o método de objeto para qualquer objeto (envolvido no evento) cuja propriedade de evento de objeto correspondente tenha sido selecionada. - Segundo, chama o método de formulário se a propriedade do evento de formulário correspondente foi selecionada. - -Não assuma que os métodos de objeto, se houver, serão chamados numa ordem particular. A regra é que os métodos de objeto sempre são chamados antes do que os métodos de formulário. Se um objeto é um subformulário, primeiro são chamados os métodos de objeto do formulário de saída do subformulário e depois o método de formulário do formulário de saída. 4D continua depois chamando aos métodos do formulário pai. Em outras palavras, quando um objeto está num subformulário, 4D utiliza a mesma regra para os métodos de objeto e formulário em subformulários. -Com excepção dos eventos On Load e On Unload, se a propriedade de evento de formulário não estiver selecionada para um determinado evento, isto não impede que ocorram as chamadas aos métodos de objeto para os objetos cuja propriedade de evento estiver selecionada. Em outras palavras, a ativação ou desativação de um evento no nível do formulário não tem efeito nas propriedades do evento do objeto. - -O número de objetos envolvidos num evento, depende da natureza do evento: - - Evento On Load - os métodos de objeto de todos os objetos do formulário (de todas as páginas) que tenham selecionada a propriedade de evento On Load serão chamados. Então, se a propriedade do evento On Load for selecionada, o método de formulário será chamado. - Eventos On Activate ou On Resize - nenhum método de objeto será chamado porque este evento aplica ao formulário como um todo e não como um objeto em particular. Portanto, se o evento de formulário On Activate estiver selecionado, somente será chamado o método do formulário. - Evento On Timer - este evento é gerado somente se o método de formulário contém uma chamada anterior para o comando [SET TIMER](set-timer.md). Se a propriedade de evento de formulário On Timer, somente o método de formulário receberá o evento, não se chamará ao método de formulário. - Evento On Drag Over, - somente será chamado o método do objeto soltável envolvido no evento (se a propriedade de evento "soltável" estiver selecionada para o objeto). Não se chamará o método do formulário. - Pelo contrário, para o evento On Begin Drag over,, se chamará o método do objeto ou o método do formulário do objeto arrastado (se a propriedade do evento "Arrastável" estiver selecionada para o objeto). - - -AVISO: Ao contrário de outros eventos, durante um evento On Begin Drag over, o método chamado é executado no contexto do processo de arrastar e soltar do objeto fonte, não no contexto do processo de arrastar e soltar o objeto de destino. Para maior informação, consulte a seção *Arrastar e Soltar* - - Se os eventosOn Mouse Enter, On Mouse Move e On Mouse Leave foram selecionados para o formulário, são gerados para cada objeto do formulário. Se estiverem selecionados para um objeto, são gerados somente para o objeto. No caso de superposição de objetos, o evento é gerado pelo primeiro objeto capaz de gerenciá-lo que se encontre do nível superior ao mais baixo. Os objetos que se fizeram invisíveis utilizando o comando [OBJECT SET VISIBLE](object-set-visible.md) não geram estes eventos. Durante a entrada de dados, outros objetos podem receber este tipo de eventos dependendo da posição do mouse. - Note que o evento On Mouse Move é gerado quando o cursor do mouse se mexe mas também quando o usuário pressiona uma tecla de modificação como Maiús, Caps Lock, Ctrl ou Opção (isto permite manipular as operações de arrastar e soltar de tipo copia o deslocamento). - Registros em lista: a sequência de chamadas a métodos e eventos de formulários nos formulários listados exibidos via[DISPLAY SELECTION](display-selection.md) / [MODIFY SELECTION](modify-selection.md) e os subformularios é a seguinte: - -| Para cada objeto da área de cabeçalho: | -| ------------------------------------------------- | -| Método objeto com evento On Header | -| Método formulário com evento On Header | -| Para cada registro: | -| Para cada objeto na área de detalhe: | -| Método de objeto com evento On Display Detail | -| Método de formulário com evento On Display Detail | - - - Não se permite chamar um comando 4D que amostre uma caixa de diálogo apartir dos eventos On Display Detail e On Header e gera um erro de sintaxe. Mais particularmente, os comandos relacionados são: [ALERT](alert.md), [DIALOG](dialog.md), [CONFIRM](confirm.md), [Request](request.md), [ADD RECORD](add-record.md), [MODIFY RECORD](modify-record.md), [DISPLAY SELECTION](display-selection.md) e [MODIFY SELECTION](modify-selection.md). - -On Page Change: este evento somente está disponível ao nível dos formulários (é chamado no método formulário). É gerado toda vez que a página atual do formulário (seguido de uma chamada ao comando [FORM GOTO PAGE](form-goto-page.md) ou de uma ação padrão de navegação). Note que o evento é gerado após a página carregar completamente, quer dizer, quando todos os objetos que contém tiverem sido inicializados (incluindo as áreas web). Este evento é útil para executar código que necessite que todos os objetos sejam inicializados de antemão. Também pode usar esse comando para otimizar a aplicação ao executar código (por exemplo, uma pesquisa) apenas depois da exibição de uma página específica do formulário e não imediatamente ao carregar a página. - -1\. Se o usuário não acessar a página, o código não será executado. - -A seguinte lista faz um resumo de como são chamados os métodos de formulário e objetos para cada tipo de evento: - -| Evento | Métodos de objeto | Método de formulario | Que objetos | -| ------------------------ | ---------------------------------- | -------------------- | ------------------------- | -| On Load | Sim | Sim | Todos | -| On Unload | Sim | Sim | Todos | -| On Validate | Sim | Sim | Todos | -| On Clicked | Sim (se clicável ou editável) (\*) | Sim | Apenas o objeto implicado | -| On Double Clicked | Sim (se clicável ou editável) (\*) | Sim | Apenas o objeto implicado | -| On Before Keystroke | Sim (se editável) (\*) | Sim | Apenas o objeto implicado | -| On After Keystroke | Sim (se editável) (\*) | Sim | Apenas o objeto implicado | -| On After Edit | Sim (se editável) (\*) | Sim | Apenas o objeto implicado | -| On Getting Focus | Sim (se tabulável) (\*) | Sim | Apenas o objeto implicado | -| On Losing Focus | Sim (se tabulável) (\*) | Sim | Apenas o objeto implicado | -| On Activate | Nunca | Sim | Nenhum | -| On Deactivate | Nunca | Sim | Nenhum | -| On Outside Call | Nunca | Sim | Nenhum | -| On Page Change | Never | Yes | Nenhum | -| On Begin drag over | Sim (se arrastável) (\*\*) | Sim | Apenas o objeto implicado | -| On Drop | Sim (se soltável) (\*\*) | Sim | Apenas o objeto implicado | -| On Drag Over | Sim (se soltável) (\*\*) | Nunca | Apenas o objeto implicado | -| On Mouse Enter | Sim | Sim | Todos | -| On Mouse Move | Sim | Sim | Todos | -| On Mouse Leave | Sim | Sim | Todos | -| On Mouse Up | Yes | Never | Involved object only | -| On Menu Selected | Nunca | Sim | Nenhum | -| On bound variable change | Nunca | Sim | Nenhum | -| On Data Change | Sim (se modificável) (\*) | Sim | Apenas o objeto implicado | -| On Plug in Area | Sim | Sim | Apenas o objeto implicado | -| On Header | Sim | Sim | Todos | -| On Printing Detail | Sim | Sim | Todos | -| On Printing Break | Sim | Sim | Todos | -| On Printing Footer | Sim | Sim | Todos | -| On Close Box | Nunca | Sim | Nenhum | -| On Display Detail | Sim | Sim | Todos | -| On Open Detail | Não, exceto para List boxes | Sim | Nenhum exceto List box | -| On Close Detail | Não, exceto para List boxes | Sim | Nenhum exceto List box | -| On Resize | Nunca | Sim | Nenhum | -| On Selection Change | Sim (\*\*\*) | Sim | Só o objeto implicado | -| On Load Record | Nunca | Sim | Nenhum | -| On Timer | Nunca | Sim | Nenhum | -| On Scroll | Sí | Nunca | Apenas o objeto implicado | -| On Picture Scroll | Sim | Sim | Apenas o objeto implicado | -| On Before Data Entry | Sim (List box) | Nunca | Apenas o objeto implicado | -| On Column Moved | Sim (List box) | Nunca | Apenas o objeto implicado | -| On Row Moved | Sim (List box) | Nunca | Apenas o objeto implicado | -| On Column Resize | Sim (List box) | Nunca | Apenas o objeto implicado | -| On Header Click | Sim (List box) | Nunca | Apenas o objeto implicado | -| On Footer Click | Yes (List box) | Never | Apenas o objeto implicado | -| On After Sort | Sim (List box) | Nunca | Apenas o objeto implicado | -| On Long Click | Sim (Botón 3D) | Sim | Apenas o objeto implicado | -| On Alternative Click | Sim (Botón 3D y list box) | Nunca | Apenas o objeto implicado | -| On Expand | Sim (Lista jerárq.) | Nunca | Apenas o objeto implicado | -| On Collapse | Sim (Lista jerárq.) | Nunca | Apenas o objeto implicado | -| On Delete Action | Yes (Hier. list and list box) | Never | Apenas o objeto implicado | -| On URL Resource Loading | Yes (Web Area) | Never | Apenas o objeto implicado | -| On Begin URL Loading | Yes (Web Area) | Never | Apenas o objeto implicado | -| On URL Loading Error | Yes (Web Area) | Never | Apenas o objeto implicado | -| On URL Filtering | Yes (Web Area) | Never | Apenas o objeto implicado | -| On End URL Loading | Yes (Web Area) | Never | Apenas o objeto implicado | -| On Open External Link | Yes (Web Area) | Never | Apenas o objeto implicado | -| On Window Opening Denied | Yes (Web Area) | Never | Apenas o objeto implicado | -| On VP Ready | Yes (4D View Pro Area) | Never | Apenas o objeto implicado | -| On Row Resize | Yes (4D View Pro Area) | Never | Apenas o objeto implicado | - - -(\*) Para mais informação, ver "Eventos, objetos e propriedades" abaixo. - -(\*\*) Consulte "*Arrastar e Soltar*" para saber mais. -(\*\*\*) Só os objetos de tipo list box, lista hierárquica e subformulario suportam este evento. - -IMPORTANTE: sempre lembre que, para qualquer evento, o método de um formulário ou de um objeto são chamadas se o evento correspondente é selecionado para o formulário ou objeto. O benefício de desativar eventos no ambiente Desenho (usando a LIsta de propriedades do editor de formulários) é que você pode reduzir de maneira importante o número de chamadas a métodos e portanto otimizar de maneira significativa a velocidade de executar seus formulários. - -Aviso: os eventos On Load e On Unload são gerados por objetos se estiverem ativados para o objeto e o formulário ao qual pertence o objeto. Se os eventos estiverem ativados para o objeto apenas, nao ocorrerao; estes dois eventos também devem ser ativados ao nível do formulario. - -#### Eventos, Objetos e Propriedades - -Um método de objeto é chamado se o evento pode realmente ocorrer para o objeto, dependendo de sua natureza e propriedades. A seguinte seção detalha os eventos que você fará uso geralmente para lidar com os diferentes tipos de objetos. - -Lembre que a Lista de propriedades do editor de formulários somente mostra os eventos compatíveis com o objeto selecionado ou o formulário. - -##### Objetos clicáveis - -Os objetos clicáveis são gerenciáveis principalmente com o mouse. São os seguintes: - -* Variáveis ​​ou campos editáveis ​​booleanas -* Botões, botões padrão, botões de rádio, caixas de seleção, grades de botão -* Botões 3D, botões de opção 3D, caixas de seleção 3D -* Menus suspensos, menus hierárquicos drop down, menus de imagem -* Listas drop-down, menus -* Áreas de deslocamento, listas hierárquicas, list box -* Botões invisíveis, botões reversa, botões opção imagem -* Termômetros, réguas, mostradores (também conhecidos como objetos deslizante) -* Abas -* Separadores. - -QuandoOn Clicked ou On Double Clicked é selecionado para um desses objetos, você pode detectar e lidar com os cliques sobre o objeto, usando o comando Form event code que retorna On Clicked ou On Double Clicked,dependendo do caso. -Se ambos os eventos são selecionados para um objeto, os eventos On Clicked e On Double Clicked serão gerados quando o usuário clicar duas vezes no objeto. -**Nota**: A partir da v14, campos e Variáveis ​​editáveis ​​que o contém texto (tipo texto, datas, hora ou número) também geram eventos On Clicked e On Double Clicked. - -Para todos esses objetos, o evento On Clicked ocorre uma vez o botão do mouse seja liberado. No entanto, existem várias exceções: - -* Botões invisíveis - O evento On Clicked ocorre assim que você clicar e não esperar que o botão do mouse seja liberado. -* objetos deslizáveis (termômetros, réguas, e mostradores) - Se o formato de saída indicar que o método de objeto deve ser chamado enquanto você desliza o controle, o evento On Clicked ocorre assim que você clicar. - -No contexto do evento On Clicked, você pode testar o número de cliques feitos pelo usuário utilizando o comando [Clickcount](clickcount.md). - -**Nota**: Alguns destes objetos pode ser ativados com o teclado. Por exemplo, uma vez que uma caixa de seleção receber o foco, pode ser selecionada usando a barra de espaço. Neste caso, é gerado um evento On Clicked. -**Aviso**: os combo boxes não são considerados objetos clicáveis. Um combo box deve ser tratado como uma área de texto editável cuja lista suspensa associada fornece valores padrão. Portanto, você pode lidar com a entrada de dados em um combo box com a ajuda de eventos On Before Keystroke, On After Keystroke e On Data Change. - -##### Objetos editáveis por teclado - -Os objetos editáveis por teclado são objetos nos quais você introduz dados utilizando o teclado e para os quais pode filtrar os dados de entrada ao menor nível detectando os eventos On After Edit, On Before Keystroke, On After Keystroke e On Selection Change. - -Os objetos e tipos de dados editáveis são os seguintes: - -* Todos os campos editáveis do tipo alfa, texto, data, hora, numérico ou (On After Edit somente) imagem -* Todas las variáveis editáveis do tipo alfa, texto, data, hora, numérico ou (On After Edit somente) imagem -* Combo boxes (com exceção de On Selection Change) -* Listboxes. - -**Nota**: A partir de 4D v14, os campos e variáveis editáveis que contém texto (tipo texto, data, hora ou número) também geram os eventos On Clicked e On Double Clicked. - -**Nota:** Mesmo sendo objetos “editáveis”, as listas hierárquicas não dirigem os eventos formulário On After Edit, On Before Keystroke e On After Keystroke (Veja também o parágrafo “Listas hierárquicas” a seguir). - -* On Before Keystroke e On After Keystroke - -**Nota:** o evento On After Keystroke pode geralmente ser substituído pelo evento On After Edit (veja a seguir). - -Assim que os eventos On Before Keystroke e On After Keystroke tenham sido selecionados para um objeto, pode detectar e gerenciar as pulsações de teclas no objeto, fazendo uso do comando **Form event code** que retornará On Before Keystroke e depois On After Keystroke (para maior informação, consulte a descrição do comando [Get edited text](get-edited-text.md)). Estes eventos também são ativados por comandos de linguagem que simulam a ação do usuário, tais como [POST KEY](post-key.md). - -Lembre que as modificações do usuário que não são realizadas fazendo uso do teclado (colar, arrastar-soltar, etc.) não são tidas em conta. A fim de processar estes eventos, deverá utilizar On After Edit. - -**Nota:** Os eventos On Before Keystroke e On After Keystroke não são gerados durante a utilização de um método de entrada. Um método de entrada (ou IME, Input Method Editor) é um programa ou um componente sistema que pode ser utilizado para introduzir caracteres complexos ou símbolos (por exemplo, chineses ou japoneses) utilizando um teclado ocidental. - -* On After Edit -Quando utilizado, este evento é gerado depois de toda alteração feita ao conteúdo de um objeto editável, sem importar a ação que originou a alteração, Quer dizer: -\- As ações de edição padrão que modificam o conteúdo tais como colar, cortar, apagar ou cancelar; -\- Soltar um valor (ação similar a colar); -\- Toda entrada de teclado realizada pelo usuário; neste caso, o evento On After Edit é gerado depois dos eventos On Before Keystroke e On After Keystroke, se utilizados. -\- Toda modificação realizada utilizando um comando de linguagem que estimule una ação de usuário (por exemplo [POST KEY](post-key.md)). -Atenção, as seguintes ações NÃO ativam este evento: -\- As ações de edição que não modificam o conteúdo da área, como copiar ou selecionar tudo, ou arrastar um valor (ação semelhante a copiar); contudo, estas ações modificam a localização do cursor e desencadeiam o evento On Selection Change. -\- As modificações aos conteúdos por programação, com exceção para os comandos que simulam uma ação do usuário. -Este evento pode ser utilizado para controlar ações de usuário a fim de prevenir que colem um texto muito longo, bloquear alguns caracteres ou evitar que um campo de senha seja cortado. -* On Selection Change: Quando aplicado a um campo ou variável de texto dinâmico (editável ou não), este evento é ativado toda vez que a posição do cursor muda. Isto acontece por exemplo, assim que o usuário seleciona o texto utilizando o mouse ou as teclas de seta do teclado, ou quando o usuário introduz texto. Isto lhe permite chamar, por exemplo, comandos tais como [GET HIGHLIGHT](get-highlight.md). - -##### Objetos Modificáveis - -Os objetos modificáveis tem uma fonte de dados cujos valores podem ser modificados utilizando o mouse ou o teclado; não são considerados verdadeiramente como controles de interface de usuário controlados através do evento On Clicked. Estes objetos são os seguintes: - -* Todos os campos editáveis (com exceção dos BLOBs) -* Todas as variáveis editáveis (com exceção dos BLOBs, ponteiros e arrays) -* Combo boxes -* Objetos externos (para os quais a entrada de dados é validada pelo plug-in) -* Listas hierárquicas -* Listboxes e colunas de list box. - -Estes objetos recebem eventos On Data Change. Quando o evento On Data Change estiver selecionado para um destes objetos, você pode detectar e gerenciar a mudança dos valores da fonte de dados, utilizando o comando Form event code que retornará On Data Change. O evento é gerado assim que a variável associada com o objeto seja atualizada internamente por 4D (geralmente, quando a área de entrada do objeto perde o foco). - -##### Objetos Tabuláveis - -Os objetos tabuláveis obtém o foco quando utiliza a tecla Tab para chegar a eles e/ou quando faz clique neles. O objeto que tem o foco recebe os caracteres (digitados no teclado) que não são modificadores de um comando de menu ou de um objeto como um botão. - -Todos os objetos são tabuláveis, COM EXCEPÇÃO dos seguintes: - -* Variáveis ou campos não editáveis -* Grades de botões -* Botões 3D, botões opção 3D, caixas de seleção 3D -* Menus drop-down, menus hierárquicos drop-down -* Menus/listas drop-down -* Menus imagem -* Áreas de deslocamento -* Botões invisíveis, botões inversos, botões opção imagem -* Gráficos -* Objetos externos (para os quais a entrada de dados é aceitada pelo plug-in 4D) -* Tabs -* Separadores. - -Quando os eventos On Getting Focus e/ou On losing Focus são selecionados para um objeto tabulável, você pode detectar e gerenciar a mudança de foco, fazendo uso do comando Form event code que retornará On Getting Focus ou On losing Focus, dependendo do caso. - -##### Botões 3D - -Os botões 3D permitem estabelecer interfaces gráficas avançadas (para uma descrição dos botões 3D, consulte o Manual de Desenho). Além dos eventos genéricos, dois eventos específicos podem ser utilizados para gerenciar estes botões: - -* On Long Click: este evento é gerado quando um botão 3D recebe um clique e o botão do mouse é pressionado por um certo período de tempo. Na teoria, o período de tempo para o qual este evento é gerado é igual ao comprimento máximo de tempo que separa um duplo clique, conforme definido nas preferências do sistema. -Este evento pode ser gerado por todos os estilos de botões 3D, botões de opção 3D y caixas de seleção 3D, com excepção dos botões 3D de “velha geração” (estilo offset de fundo) e as áreas de setas de botões 3D com menus suspensos (veja a seguir). - -Este evento é utilizado geralmente para mostrar menus suspensos no caso de cliques longos nos botões. O evento On Clicked, se estiver selecionado, será gerado se o usuário liberar o botão do mouse antes do tempo limite do “clique longo”. - -* On Alternative Click alguns estilos de botões 3D podem estar associados a um menu suspenso e mostrar uma seta. Clicar nesta seta faz com que seja exibida uma caixa de seleção que oferece um conjunto de ações adicionais em relação com a ação principal do botão. -* 4D permite gerenciar este tipo de botão utilizando o evento On Alternative Click.Este evento é gerado quando o usuário clica na “seta” (assim que o botão do mouse seja pressionado): - - \- Se o menu suspenso for do tipo “separado,” o evento somente é gerado quando um clique ocorre na parte do botão com a seta. - - \- Se o menu suspenso for do tipo “ligado,” o evento é gerado quando ocorre um clique em qualquer parte do botão. Por favor tenha em conta que o evento On Long Click não pode ser gerado com este tipo de botão. - -![](../assets/en/commands/pict2074286.en.png) - -Os estilos de botões 3D, botões de opção 3D e caixas de seleção 3D que aceitam a propriedade “Com menu suspenso” são: Nenhum, Botão de barra, Bevel, Bevel arredondado e Office XP. - -##### List box - -Vários eventos de formulário podem ser utilizados para gerenciar as diferentes características específicas dos list box: - -* On Before Data Entry: este evento é gerado pouco antes que uma célula de list box seja editada (antes de que o cursor de entrada apareça). Este evento permite ao desenvolvedor por exemplo, mostrar um texto diferente dependendo de que o usuário esteja em modo visualização ou em modo edição. -* On Selection Change: este evento é gerado sempre que a seleção atual de linhas ou colunas de list box são alteradas. Esse evento também é gerado para listas de registros e listas hierárquicas. -* On Column Moved: este evento é gerado quando uma coluna de list box é movida pelo usuário usando arrastar e soltar. O evento não é gerado se a coluna é arrastada e soltada para a sua localização inicial. O comando [LISTBOX MOVED COLUMN NUMBER](listbox-moved-column-number.md) retorna a posição nova coluna. -* On Row Moved: este evento é gerado quando uma linha de list box é movida pelo usuário usando arrastar e soltar. O evento não é gerado se a linha é arrastada e soltada para a sua localização inicial. -* On Column Resize: este evento é gerado quando quando o comprimento de uma coluna no list box for mudado por um usuário. A partir de 4D v16, o evento é ativado "ao vivo", ou seja, enviando continuamente durante o evento, por tanto tempo quanto a list box ou coluna em questao esteja sendo redimensionada. O redimensionamento é realizado manualmente pelo usuário, ou pode acontecer como resultado do list box e suas colunas sendo redimensionadas junto com a janela de formulário (se o formulário for redimensionado manualmente ou usando o comando [RESIZE FORM WINDOW](resize-form-window.md)). - Nota: O evento On Column Resize nao é ativado quando uma coluna "falsa" for redimensionada (para saber mais sobre colunas falsas, veja *Redimensionar tema Opcoes*). -* On Expand e On Collapse: esses eventos são gerados quando uma linha de listbox hierárquico se expande ou contrai. -* On Header Click: este evento é gerado quando ocorre um clique no cabeçalho de uma coluna no list box. Neste caso, o comando [Self](self.md) lhe permite conhecer o cabeçalho da coluna na que foi feito clique. O evento On Clicked é gerado quando um clique direito (Windows) ou Ctrl+clique (Mac OS) ocorre em uma coluna ou em um cabeçalho de coluna. Pode testar o número de cliques realizados pelo usuário utilizando o comando [Clickcount](clickcount.md). -Se a propriedade **Ordenavel** foi selecionada para a list box, você pode decidir se permite ou não uma ordenação padrão da coluna passando o valor 0 ou -1 na variável $0: -\- Se $0 for igual a 0, se realiza a ordenação padrão -\- Se $0 for igual a -1, não se realiza a ordenação padrão e o cabeçalho não é mostrada a flecha de ordenação. O desenvolvedor pode também gerar uma ordenação das colunas baseada em critérios de ordenação personalizados usando os comandos de gestão de arrays de 4D. -Se a propriedade **Ordenavel** não estiver selecionada para a list box, a variável $0 não é utilizada. -* On Footer Click: este evento está disponível para o objeto list box ou coluna de list box. É gerado quando ocorre um clique no rodapé de um list box ou de uma coluna de list box. Neste caso, o comando [OBJECT Get pointer](object-get-pointer.md) retorna um ponteiro à variável do rodapé onde se fez o clique. O evento é gerado para clique esquerdo e direito. -Pode testar o número de cliques realizados pelo usuário utilizando o comando [Clickcount](clickcount.md). -* On After Sort: este evento é gerado logo depois de realisar uma ordenação padrão (entretanto, não é gerada se $0 devolver -1 no evento On Header Click). Este mecanismo é útil para conservar os sentidos das últimas ordenações efetuadas pelo usuário. Neste evento, o comando \[#cmd id="308"/\] retorna um ponteiro à variável da coluna que foi ordenada. -* On Delete Action: este evento é gerado cada vez que o usuario tenta apagar os elementos selecionados pressionando a tecla Deletar (**Del** ou **Backspace**) ou selecionando um elemento de menu cuja ação padrão associada seja Apagar (tal como o comando **Eliminar** do menu **Edicição**. Este evento só está disponível a nivel do objeto list box. Note que gerar o evento é a única ação realizada por 4D: o programa não apaga os elementos. O desenvolvedor deve manejar a eliminaçao e as mensagens de aviso prévio que sejam mostradas. -* On Scroll (novo na v15): Este evento é gerado assim que o usuário move as filas ou colunas da lista. O evento é gerado somente quando a mudança é o resultado de uma ação do usuário: usando barras e / ou setas de rolagem, roda do mouse ou teclado. Ele não é gerado quando a mudança é devida à execução do comando [OBJECT SET SCROLL POSITION ](object-set-scroll-position.md). -Esse evento é acionado após qualquer outr evento de usuário relacionado ação de rolagem (On Clicked, On After Keystroke, etc.). O evento só é gerado no método objeto (não no método de formulário). Ver Exemplo 15. -* On Alternative Click(novo na v15): Este evento é gerado nas colunas de list box de tipo array de objetos quando o usuário clicar em um botão reticências de Widget (atributo "alternateButton"). Para obter mais informações, consulte *Use arrays de objetos em colunas* -Dois eventos genéricos também pode ser usados no contexto de um list box de tipo "seleção": -* On Open Detail:: Este evento é gerado quando um registro está prestes a ser mostrado no formulário detalhado associado ao list box de tipo " seleção" (e antes que este formulário seja aberto). -* On Close Detail Este evento é gerado quando um registro exibido no formulário detalhado associado ao list box esteja prestes a ser fechado (independentemente de se o registro foi modificado ou não). - -##### Listas Hierárquicas - -Além dos eventos genéricos, vários eventos específicos podem ser utilizados para administrar as ações que os usuários nas listas hierárquicas: - -* On Selection Change: este evento se genera cada vez que la selección en la lista jerárquica se modifica después de un clic o de que se presione una tecla. -Este evento también es generado en los objetos list box y listas de registros. -* On Expand: este evento se genera cada vez que un elemento de la lista jerárquica se despliega con un clic o al presionar una tecla. -* On Collapse: este evento se genera cada vez que un elemento de la lista jerárquica se contrae con un clic o al presionar una tecla. -* On Delete Action: este evento se genera cada vez que el usuario intenta borrar los elementos seleccionados presionando una tecla de supresión (**Supr** o **Retroceso**) o seleccionando el comando **Eliminar** del menú **Edición**. Note que la generación del evento es la única acción efectuada por 4D: el programa no borra ningún elemento. El desarrollador debe encargarse de la eliminación y de todos los mensajes de alerta que aparezcan (ver el ejemplo). - -Estos eventos no son mutuamente exclusivos. Pueden generarse uno después del otro para una lista jerárquica: - -\- En respuesta a presionar una tecla (en orden): - -| **Evento** | **Contexto** | -| --------------------- | ------------------------------------------------------------------------ | -| On Data Change | Un elemento estaba en edición | -| On Expand/On Collapse | Apertura/cierre de una sublista utilizando las teclas de flechas -> o <- | -| On Selection Change | Selección de un nuevo elemento | -| On Clicked | Activación de la lista utilizando el teclado | - - -\- En respuesta a un clic (en orden): - -| **Evento** | **Contexto** | -| -------------------------------------- | --------------------------------------------------------------------------------- | -| On Data Change | Un elemento estaba en edición | -| On Expand/On Collapse | Apertura/cierre de una sublista utilizando los iconos de despliegue/contracción o | -| Doble-clic en una sublista no editable | | -| On Selection Change | Selección de un nuevo elemento | -| On Clicked / On Double Clicked | Activación de la lista por un clic o un doble clic | - -##### Variáveis e campos imagem - -* O evento formulário On Picture Scroll é gerado assim que o usuário desloca uma imagem dentro da área (campo ou variável) que o contém. Pode deslocar o conteúdo de uma área imagem quando o tamanho da área é menor a seu conteúdo e o formato de visualização é "**Truncado (não centrado)**". Para maior informação, consulte *Formatos Imagem*. -O evento é gerado quando o deslocamento é o resultado de uma ação do usuário: utilizando os cursores ou as barras de deslocamento, utilizando a roda do mouse ou as teclas de deslocamento do teclado (para maior informação sobre o deslocamento utilizando o teclado, consulte *Barra de rolagem*). Este evento não é gerado quando o objeto se desloca pela execução do comando [OBJECT SET SCROLL POSITION ](object-set-scroll-position.md). Este evento se dispara depois que um evento de usuário relacionado com a ação de eslocamentonão seja gerado (On Clicked, On After Keystroke, etc.). .É gerado no método objeto (e não no método formulário). Consulte o exemplo 14 - -* (Novo em v16) O evento On Mouse Up é gerado quando o usuário acabou de soltar o botão esquerdo do mouse enquanto arrastando em uma area de imagem (campo ou variável). Este evento é útil, por exemplo, quando quiser que o usuário possa mover, redimensionar ou desenhar objetos em uma área SVG. -Quando o evento On Mouse Up for gerado, pode obter as coordenadas locais quando o botão do mouse for solto. Estas coordenadas são retornadas em **MouseX** e **MouseY** *Variáveis sistema*. As coordenadas são expressas em pixels em relação ao canto esquerdo superior da imagem (0,0). -Quando usar este evento, deve chamar o comando [Is waiting mouse up](is-waiting-mouse-up.md) para manejar casos onde o estado gerente do formulário poderia estar dessincronizado. Este é o caso, por exemplo, quando uma caixa de diálogo de alerta for exibida acima do formulário enquanto o botão do mouse ainda não foi solto. Para saber mais e ver um exemplo de uso do evento On Mouse Up, veja a descrição do comando [Is waiting mouse up](is-waiting-mouse-up.md). - -**Nota:** se a opção "arrastável" não estiver marcada para o objeto de imagem, o evento On Mouse Up nunca é gerado. - -##### Subformulários - -Um objeto de conteúdo do sub-formulário (objeto incluído no formulário pai contém uma instância do sub-formulário) suporta os seguintes eventos: - -* On Load e On Unload: abertura e fechamento do sub-formulário respectivamente (esses eventos também devem ser ativados no pai do formulário para que eles sejam tidos em conta). Observe que esses eventos são gerados antes do formulário pai. Além disso, observe que de acordo com os princípios de funcionamento dos eventos de formulário, se o sub-formulário está localizado em uma página diferente de 0 ou 1, esses eventos só irão gerar quando a página é exibida/fechada (e não quando o formulário é exibido/fechado). -* On Validate: validação da entrada com o sub-formulário. -* On Data Change: O valor da variável do objeto de conteúdo do sub-formulário foi modificado. -* On Getting Focus e On Losing Focus: o conteúdo do sub-formulário acaba de receber ou perder o foco. Esses eventos são gerados no método do objeto sub-formulário quando eles são selecionados. Enviam para o formulário do método sub-formulário, que significa por exemplo que você pode gerenciar a visualização dos botões de navegação no sub-formulário em função do foco. Observe que os próprios objetos do sub-formulário podem ter o foco. -* On bound variable change: este evento específico é gerado no contexto do método de formulário do sub-formulário assim que um valor é atribuído à variável associado com o sub-formulário no formulário pai (mesmo se o mesmo valor é retribuído) e se o sub-formulário pertence à página do formulário atual ou a página 0\. Para obter maior informação sobre a gestão de sub-formulários, consulte o manual de *Desenho*. - -**Nota:** É possível definir todos os tipos de eventos personalizados que podem ocorrer em um sub-formulário através do comando [CALL SUBFORM CONTAINER](call-subform-container.md). Este comando lhe permite chamar o método do objeto de recipiente e passar um código de evento. - -Os eventos abaixo também são recebidos no método formulário do subformulário: - -* Os eventos On Clicked e On Double Clicked gerados no sub-formulário são recebidos em primeiro lugar pelo método formulário do sub-formulário e logo pelo método formulário do formulário local. -* On Resize\- este evento é eviado ao método formulário do subformulário quando o tamanho de objeto subformulário de formulário pai tenha sido modificado. - -##### Áreas Web - - -Existem sete eventos para formulários especificamente disponíveis para as zonas de web: - -* On Begin URL Loading: este evento ocorre ao início da carga de um nuevo URL na área Web. A variável "URL" associada com a área web permite conhecer o URL que está carregando. -**Nota:** O URL que está carregando é diferente do URL atual (consulte a descrição do comando [WA Get current URL](wa-get-current-url.md "WA Get current URL")). -* On URL Resource Loading: este evento ocorre cada vez que carga um novo recurso (imagem, moldura, etc.) na página web atual. A variável "Progressão" associada a área lhe permite buscar o estado atual da carga. -* On End URL Loading: este evento ocorre quando todos os recursos da URL atual são carregados. Você pode chamar o comando WA Get current URL para conhecer a URL carregada. -* On URL Loading Error: este evento ocorre quando um erro é detectado ao carregar uma URL. Você pode chamar o comando WA GET LAST URL ERROR para obter informações sobre o erro. -* On URL Filtering: este evento ocorre quando a carga de um URL é bloqueada pela área web devido a um filtro definido utilizando o comando [WA SET URL FILTERS](wa-set-url-filters.md "WA SET URL FILTERS"). Pode conhecer o URL bloqueado utilizando o comando [WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL"). -* On Open External Link: este evento ocorre quando a carga de um URL é bloqueada pela área Web e o URL é aberto com o navegador do sistema atual, devido a um filtro definido utilizando o comando [WA SET EXTERNAL LINKS FILTERS](wa-set-external-links-filters.md "WA SET EXTERNAL LINKS FILTERS"). Pode conhecer o URL bloqueado utilizando o comando [WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL"). -* On Window Opening Denied: este evento ocorre quando ao abrir uma janela pop-up ela se bloqueia para a área Web. As áreas web 4D não permitem a abertura de janelas pop-up. Pode conhecer o URL bloqueado utilizando o comando [WA Get last filtered URL](wa-get-last-filtered-url.md "WA Get last filtered URL"). - -##### áreas 4D View Pro - -Os eventos abaixo estão disponíveis para áreas 4D View Pro. - -* On After Edit: Este evento é gerado depois que uma edição foi feita na área 4D View Pro. -* On Clicked: Este evento é gerado quando acontecer um clique no viewport da área 4D View Pro (fora dos cabeçalhos, barras de rolagem ou barra de ferramentas) -* On Column Resize: Este evento é gerado quando a largura de uma coluna é modificada pelo usuário. -* On Double Clicked: Este evento é gerado quando acontecer um duplo clique na área 4D View Pro. -* On Header Click:Este evento é gerado quando um clique acontecer no cabeçalho de coluna ou linha. -* On Row Resize: Este evento é gerado quando a altura de uma linha for modificada por um usuário. -* On Selection Change: Este evento é gerado quando a seleção atual de linhas ou colunas for modificada. -* On VP ReadyEste evento é gerado quando o carregamento de área 4D View Pro estiver completo. Precisa usar este evento para escrever o código de inicialização para esta área. - -Para saber mais sobre estes eventos, veja a seção *Evento formulário On VP Ready*. - -#### Exemplo 1 - -Este exemplo mostra o evento On Validate utilizado para atribuir automaticamente (a um campo) a fecha quando o registro é modificado: - -```4d -  //Método de formulário - Case of -  // ... -    :(Form event code=On Validate) -       [aTable]Last Modified On:=Current date - End case -``` - -#### Exemplo 2 - -Neste exemplo, a gestão completa de um menú drop-down, (inicialização, clics do usuário, e liberação de objeto) está encapsulado no método de objeto: - -```4d -  //asBurgerSize Método objeto lista Drop-down - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asBurgerSize;3) -       asBurgerSize{1}:="Small" -       asBurgerSize{1}:="Medium" -       asBurgerSize{1}:="Large" -    :(Form event code=On Clicked) -       If(asBurgerSize#0) -          ALERT("Você escolheu um"+asBurgerSize{asBurgerSize}+" hamburguer.") -       End if -    :(Form event code=On Unload) -       CLEAR VARIABLE(asBurgerSize) - End case -``` - -#### Exemplo 3 - -Este exemplo mostra como aceitar e administrar uma operação de arrastar e soltar para um objeto de campo que aceita somente valores de imagens, em um método de objeto. - -```4d -  //[aTable]aPicture Método de objeto campo imagem editável - Case of -    :(Form event code=On Drag Over) -  //Uma operação arrastar e soltar foi inicada e o mouse está atualmente sobre o campo -  //Obtém a informação sobre o objeto fonte -       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess) -  //Note que não é preciso testar o número ID do processo fonte -  //para que o método objeto seja executado, já que é o mesmo processo -       $vlDataType:=Type($vpSrcObject->) -  //a fonte de dados é uma imagem? (campo, variável ou array)? -       If(($vlDataType=Is picture)|($vlDataType=Picture array)) -  //se sim, aceitar o arrastar. -          $0:=0 -       Else -  //Se não, recusar arrastar -          $0:=-1 -       End if -    :(Form event code=On Drop) -  //A fonte de dados foi solta no objeto, portanto é preciso copiá-la -  //no objeto -  //Obtém a informação sobre o objeto fonte -       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess) -       $vlDataType:=Type($vpSrcObject->) -       Case of -  //O objeto fonte é um campo ou variável Imagem -          :($vlDataType=Is picture) -  //O objeto fonte é do mesmo processo? (E assim da mesma janela ou formulário?) -             If($lSrcProcess=Current process) -  //Se sim, apenas copie o valor fonte -                [aTable]aPicture:=$vpSrcObject-> -             Else -  //Se não, o objeto fonte é uma variável? -                If(Is a variable($vpSrcObject)) -  //Se sim, obtém o valor do processo fonte -                   GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject->;$vgDraggedPict) -                   [aTable]aPicture:=$vgDraggedPict -                Else -  //Se não, use CALL PROCESS para obter o valor campo para processo fonte -                End if -             End if -  //O objeto fonte é um array de imagens -          :($vlDataType=Picture array) -  //O objeto fonte é do mesmo processo? (Portanto da mesma janela e formulário)? -             If($lSrcProcess=Current process) -  //Se sim, apenas copie o valor fonte -                [aTable]aPicture:=$vpSrcObject->{$vlSrcElement} -             Else -  //Se não, obtenha o valor do processo fonte -                GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject->{$vlSrcElement};$vgDraggedPict) -                [aTable]aPicture:=$vgDraggedPict -             End if -       End case - End case -``` - -**Nota:** Para outros exemplos mostrando como gerenciar eventos On Drag Over e On Drop, veja os exemplos do comando *\_o\_DRAG AND DROP PROPERTIES*. - -#### Exemplo 4 - - Este exemplo é um modelo para um método do formulário. Mostra cada um dos eventos possíveis que podem ocorrer quando um relatório usa um formulário como formulário de saída: - -```4d -  //Método de um formulário sendo usado como formulário output para um relatório resumo - $vpFormTable:=Current form table - Case of -  //... -    :(Form event code=On Header) -  //Uma área cabeçalho vai ser impressa -       Case of -          :(Before selection($vpFormTable->)) -  //Código para a primeira quebra de cabeçalho vai aqui -          :(Level=1) -  //Código para uma quebra de cabeçalho nível 1 aqui -          :(Level=2) -  //Código para uma quebra de cabeçalho nível 2 aqui -  //... -       End case -    :(Form event code=On Printing Detail) -  //Um registro vai ser impresso -  //Código para cada quebra vai aqui -    :(Form event code=On Printing Break) -  //Uma quebra de área vai ser impressa -       Case of -          :(Level=0) -  //Código para uma quebra de nível 0 aqui -          :(Level=1) -  //Código para uma quebra de nível 1 aqui -  //... -       End case -    :(Form event code=On Printing Footer) -       If(End selection($vpFormTable->)) -  //Código para o último rodapé aqui -       Else -  //Código para um cabeçalho aqui -       End if - End case -``` - -#### Exemplo 5 - -Este exemplo mostra o modelo de um método de formulário que administra os eventos que podem ocorrer em um formulário mostrado utilizando os comandos [DISPLAY SELECTION](display-selection.md) ou [MODIFY SELECTION](modify-selection.md). Por propósitos didáticos, mostra a natureza do evento na barra de título da janela do formulário. - -```4d -  //Um método de formulário - Case of -    :(Form event code=On Load) -       $vsTheEvent:="O formulário vai ser exibido" -    :(Form event code=On Unload) -       $vsTheEvent:="O formulário saida vai desaparecer da tela" -    :(Form event code=On Display Detail) -       $vsTheEvent:="Exibindo registro  #"+String(Selected record number([TheTable])) -    :(Form event code=On Menu Selected) -       $vsTheEvent:="Um item de menu foi selecionado" -    :(Form event code=On Header") -       $vsTheEvent:="A área cabeçalho vai ser desenhada" -    :(Form event code=On Clicked") -       $vsTheEvent:="Um registro foi clicado" -    :(Form event code=On Double Clicked") -       $vsTheEvent:="Um registro recebeu duplo clique" -    :(Form event code=On Open Detail) -       $vsTheEvent:="O registro #"+String(Selected record number([TheTable]))+" recebeu duplo clique" -    :(Form event code=On Close Detail) -       $vsTheEvent:="Voltar ao formulário form" -    :(Form event code=On Activate) -       $vsTheEvent:="A janela de formulário virou a janela mais à frente" -    :(Form event code=On Deactivate) -       $vsTheEvent:="A janela de formulário não é mais a janela mais à frente" -    :(Form event code=On Menu Selected) -       $vsTheEvent:="Um item menu foi escolhido" -    :(Form event code=On Outside Call) -       $vsTheEvent:="Uma chamada externa foi recebida" -    Else -       $vsTheEvent:="O que aconteceu? Event #"+String(Form event) - End case - SET WINDOW TITLE($vsTheEvent) -``` - -#### Exemplo 6 - - Para os exemplos sobre gestão dos eventos On Before Keystroke e On After Keystroke, ver os exemplos dos comandos [Get edited text](get-edited-text.md), [Keystroke](keystroke.md) y [FILTER KEYSTROKE](filter-keystroke.md). - -#### Exemplo 7 - - Este exemplo mostra como tratar da mesma forma os clics e doble clic em uma área de deslocamento: - -```4d -  //método de objeto área rolável asChoices - Case of -    :(Form event code=On Load) -       ARRAY TEXT(asChoices;...) -  //... -       asChoices:=0 -    :((Form event code=On Clicked)|(Form event code=On Double Clicked)) -       If(asChoices#0) -  //Um item foi clicado, faça algo aqui -  //... -       End if -  //... - End case -``` - -#### Exemplo 8 - - Este exemplo mostra como tratar os clics e doble clics utilizando uma resposta diferente. Note o uso do elemento zero para conservar o valor do elemento selecionado: - -```4d -  // Método de objeto para a área de deslocamento asOpçoes - Case of -    :(FORM Event=On Load) -       ARRAY STRING(...;asOpçoes;...) -  // ... -       asOpçoes:=0 -       asOpçoes{0}:="0" -    :(FORM Event=On Clicked) -       If(asOpçoes#0) -          If(asOpçoes#Num(asOpçoes)) -  // Foi realizado clic em um novo elemento, fazer algo aqui -  // ... -  // Guardar o novo elemento selecionado para a próxima vez -             asOpçoes{0}:=String(asOpçoes) -          End if -       Else -          asOpçoes:=Num(asOpçoes{0}) -       End if -    :(FORM Event=On Double Clicked) -       If(asOpçoes#0) -  // Foi realizado doble clic sobre um elemento, fazer algo diferente aqui -       End if -  // ... - End case -``` - -#### Exemplo 9 - - Este exemplo mostra como manter uma área de texto a partir de um método desde um método de formulário, utilizando os eventos On Getting Focus e On losing Focus: - -```4d -  //[Contacts];Método de formulário"Data Entry" - Case of -    :(Form event code=On Load) -       var vtStatusArea : Text -       vtStatusArea:="" -    :(Form event code=On Getting Focus) -       RESOLVE POINTER(Focus object;$vsVarName;$vlTableNum;$vlFieldNum) -       If(($vlTableNum#0)&($vlFieldNum#0)) -          Case of -             :($vlFieldNum=1) //Campo Sobrenome -                vtStatusArea:="Entre o sobrenome do Contato; a primeira letra será convertida para maiúscula" -  //... -             :($vlFieldNum=10) //Campo CEP (ZIP) -                vtStatusArea:="Entre um código de CEP de 5-díditos; será validado automaticamente" -  //... -          End case -       End if -    :(Form event code=On Losing Focus) -       vtStatusArea:="" -  //... - End case -``` - -#### Exemplo 10 - -Este exemplo mostra como responder ao evento de fechamento de uma janela com um formulário utilizado para a entrada de dados: - -```4d -  //Método para um formulário de entrada - $vpFormTable:=Current form table - Case of -  //... -    :(Form event code=On Close Box) -       If(Modified record($vpFormTable->)) -          CONFIRM("Este registro foi modificado. Salvar as mudanças?") -          If(OK=1) -             ACCEPT -          Else -             CANCEL -          End if -       Else -          CANCEL -       End if -  //... - End case -``` - -#### Exemplo 11 - - Este exemplo mostra como passar a maiúsculas um campo de tipo texto ou alfanumérico cada vez que o valor seja modificado: - -```4d -  //[Contacts]First Name Object method - Case of -  //... -    :(Form event code=On Data Change) -       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+Lowercase(Substring([Contacts]First Name;2)) -  //... - End case -``` - -#### Exemplo 12 - - Este exemplo mostra como passar a maiúsculas um campo de tipo texto ou alfanumérico cada vez que o valor seja modificado: - -```4d -  //[Contacts]First Name Object method - Case of -  //... -    :(Form event code=On Data Change) -       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+Lowercase(Substring([Contacts]First Name;2)) -  //... - End case -``` - -#### Exemplo 13 - -O exemplo abaixo ilustra como manejar uma ação de eliminação nuna lista hierárquica: - -```4d - ... //método da lista hierárquica -:(([#current_title_incode=On Delete Action) - ARRAY LONGINT($itemsArray;0) - $Ref:=Selected list items(<>HL;$itemsArray;*) - $n:=Size of array($itemsArray) -  - Case of -    :($n=0) -       ALERT("Nenhum elemento selecionado") -       OK:=0 -    :($n=1) -       CONFIRM("Quer eliminar este elemento?") -    :($n>1) -       CONFIRM("Quier eliminar estos elementos?") - End case -  - If(OK=1) -    For($i;1;$n) -       DELETE FROM LIST(<>HL;$itemsArray{$i};*) -    End for - End if -``` - -#### Exemplo 14 - -Neste exemplo, o evento formulário On Scroll permite sincronizar a visualização de duas imagens em um formulário. O seguinte código se agrega no método do objeto "satélite" (campo imagen ou variável imagem): - -```4d - Case of -    :(Form event code=On Scroll) -  // tomamos a posição da imagem da esquerda -       OBJECT GET SCROLL POSITION(*;"satellite";vPos;hPos) -  // e a aplicamos a imagem da direita -       OBJECT SET SCROLL POSITION(*;"plan";vPos;hPos;*) - End case -``` - -Resultado: - -#### Exemplo 15 - -Se você deseja desenhar um retängulo vermelho ao redor de uma célula selecionada de um list box e deseja que o retângulo se mova junto com a list box se for movimentada verticalmente pelo usuário. No método objeto do list box, pode escrever: - -```4d - Case of - -:(Form event code=On Clicked) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT SET VISIBLE(*;"RedRect";True)&NBSP; //inicializa um retângulo vermelho -       OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -  -    :(Form event code=On Scroll) -       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) -       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) -       OBJECT GET COORDINATES(*;"LB1";$xlb1;$ylb1;$xlb2;$ylb2) -       $toAdd:=LISTBOX Get headers height(*;"LB1") //preste atençãp na altura do cabeçalho para que não o ultrapasse -       f($ylb1+$toAdd<$y1)&($ylb2>$y2) //se estamos dentro da list box -  //para simplificar, só manejamos cabeçalhos -  //mas devemos manejar clipping horizontal -  //assim como as barras de deslocamento -       OBJECT SET VISIBLE(*;"RedRect";True) -       OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) -    Else -       OBJECT SET VISIBLE(*;"RedRect";False) -    End if -  -End case - - -``` - -Como resultado, o retângulo vermelho segue o deslocamento da list box: - -![](../assets/en/commands/pict1900395.en.png) - -#### Ver também - -[CALL SUBFORM CONTAINER](call-subform-container.md) -[Current form table](current-form-table.md) -[FILTER KEYSTROKE](filter-keystroke.md) -[FORM Event](form-event.md) -[Get edited text](get-edited-text.md) -[Keystroke](keystroke.md) -[POST OUTSIDE CALL](post-outside-call.md) -[SET TIMER](set-timer.md) - -#### Propriedades - -| | | -| --- | --- | -| Número do comando | 388 | -| Thread-seguro | ✗ | - - diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md deleted file mode 100644 index ef624ccd76b214..00000000000000 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/form-event.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -id: form-event -title: FORM Event -slug: /commands/form-event -displayed_sidebar: docs ---- - -**FORM Event** : Object - -| Parâmetro | Tipo | | Descrição | -| --- | --- | --- | --- | -| Resultado | Object | ← | objeto evento | - - - -#### Descrição - -**FORM Event** devolve um objeto que contém informação sobre o evento de formulário que acaba de ocorrer. Em geral, usará **FORM Event** desde um formulário ou método de objeto. - -**Objeto devolvido** - -Cada objeto devolvido inclui as propriedades principais: - -| **Propriedade** | **Tipo** | **Descrição** | -| --------------- | ------------- | ------------------------------------------------------------------------------------------------ | -| objectName | texto | Nome de objeto que desencadeia o evento: não inclui se o evento for desencadeado pelo formulário | -| code | inteiro longo | Valor numérico de evento de formulário. Ver [Form event code](../commands/form-event-code.md) | -| description | texto | Nome de evento de formulário (por exemplo, "On After Edit"). | - -Por exemplo, no caso de clicar no botão, o objeto contém as propriedades abaixo: - -```RAW -{"code":4,"description":"On Clicked","objectName":"Button2"} -``` - -O objeto de evento pode conter propriedades adicionais, dependendo do objeto para o qual ocorre o evento. Por exemplo, os objetos *eventObj* gerados em: - -* Objetos List box ou colunas, veja *list box documentation on developer.4d.com*. -* Áreas 4D View Pro, veja *Evento formulário On VP Ready*.O - -**Nota:** se não há um evento atual, **FORM Event** devolvido um objeto nulo. - -#### Exemplo 1 - -Se quiser manejar o evento On Clicked em um botão: - -```4d - If(FORM Event.code=On Clicked) -    ... - End if -``` - -#### Exemplo 2 - -Se estabelecer o nome de objeto coluna com um nome atributo real de uma dataclasse como: - -![](../assets/en/commands/pict4843820.en.png) - -Pode ordenar a coluna usando o evento On Header Click: - -```4d - Form.event:=FORM Event - Case of -    :(Form event code=On Header Click) -       if(Form.event.columnName="lastname") -          Form.employees:=Form.employees.orderBy(Form.event.columnName+", firstname") -       End if - End case -``` - -#### Exemplo 3 - -Se quiser manejar On Display Details em um objeto list box com um método estabelecido na propriedade *Meta info expression*: - -![](../assets/en/commands/pict4843812.en.png) - -O método *setColor*: - -```4d - var $event;$0;$meta : Object - $event:=[#current_title_incod] - $meta:=New object -  - Case of -    :($event.code=On Display Detail) -       If($event.isRowSelected) -          $meta.fill:="lightblue" -       End if - End case - $0:=$meta -``` - -A list box resultado quando linhas são selecionadas: - -![](../assets/en/commands/pict4843808.en.png) - -#### Ver também - -[Form event code](../commands/form-event-code.md) - -#### Propriedades - -| | | -| --- | --- | -| Número do comando | 1606 | -| Thread-seguro | ✓ | - - diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md deleted file mode 100644 index b18ddab048bb8c..00000000000000 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R7/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nome* {; *} ) : Integer - -| Parâmetro | Tipo | | Descrição | -| --- | --- | --- | --- | -| nome | Text | → | Nome do processo do qual recuperar o número | -| * | Operator | → | Devolver o número do processo servidor | -| Resultado | Integer | ← | Número de processo | - - - -#### Descrição - -Process number devolve o número do processo cujo nome é passado em *nome*. Se não se encontra nenhum processo, Process number devolve 0. - -O parâmetro opcional *\** lhe permite recuperar, a partir de 4D Client, o número de um processo que se está executando no servidor (um procedimento armazenado). Neste caso, o valor devolvido é negativo. Esta opção é particularmente útil quando se utilizam os comandos [GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE") e [SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE"). Para maior informação, consulte as descrições destes comandos. - -Se o comando se executa com o parâmetro *\** desde um processo na máquina servidor, o valor devolvido é positivo. - -#### Exemplo - -Você pode criar uma paleta flutuante, que é executado em um processo separado, em que você implementou suas próprias ferramentas para interagir com o ambiente Desenho. Por exemplo, quando você seleciona um elemento em uma lista hierárquica de palavras-chave, você deseja colar algum texto na janela no primeiro plano do ambiente Desenho. Para fazer isso, você pode usar a área de transferência, mas o evento de colar deve ocorrer dentro do processo Desenho. A função a seguir retorna o número do processo Desenho (se ativo): - -```4d -  // Método de projeto Número processo Desenho -  // Número processo Desenho -> Inteiro longo -  // Número processo Desenho -> Número do processo de Desenho -  - $0:=Process number("Processo Desenho") -  // Nota: Este pode não funcionar no futuro se a fonte muda -``` - -Com esta função, o método de projeto listado cola o texto recebido como parâmetro na janela do primeiro plano no ambiente Desenho (se aplicado): - -```4d -  // Método de projeto COLAR TEXTO EM DESENHO -  // PEGAR TEXTO EM DESENHO ( Text ) -  //PEGAR TEXTO EM DESENHO (Texto a pegar na janela de Desenho do primeiro plano) -  - var $1 : Text - var $vlDesenhoPID;$vlCont : Integer -  - $vlDiseñoPID:=Numero processo Desenho - If($vlDesenhoPID&NBSP;#&NBSP;0) -  // Coloque o texto na área de transferência -    SET TEXT TO PASTEBOARD($1) -  // Gerar um evento Ctrl-V / Comando-V -    POST KEY(ASCII("v");Command key mask;$vlDesenhoPID) -  // Chamar repetidamente DELAY PROCESS para que o temporizador possa passar -  // sobre o evento ao processo Desenho -    For($vlCont;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Ver também - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propriedades - -| | | -| --- | --- | -| Número do comando | 372 | -| Thread-seguro | ✓ | - - diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md deleted file mode 100644 index b18ddab048bb8c..00000000000000 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R8/commands-legacy/process-number.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -id: process-number -title: Process number -slug: /commands/process-number -displayed_sidebar: docs ---- - -**Process number** ( *nome* {; *} ) : Integer - -| Parâmetro | Tipo | | Descrição | -| --- | --- | --- | --- | -| nome | Text | → | Nome do processo do qual recuperar o número | -| * | Operator | → | Devolver o número do processo servidor | -| Resultado | Integer | ← | Número de processo | - - - -#### Descrição - -Process number devolve o número do processo cujo nome é passado em *nome*. Se não se encontra nenhum processo, Process number devolve 0. - -O parâmetro opcional *\** lhe permite recuperar, a partir de 4D Client, o número de um processo que se está executando no servidor (um procedimento armazenado). Neste caso, o valor devolvido é negativo. Esta opção é particularmente útil quando se utilizam os comandos [GET PROCESS VARIABLE](get-process-variable.md "GET PROCESS VARIABLE") e [SET PROCESS VARIABLE](set-process-variable.md "SET PROCESS VARIABLE"). Para maior informação, consulte as descrições destes comandos. - -Se o comando se executa com o parâmetro *\** desde um processo na máquina servidor, o valor devolvido é positivo. - -#### Exemplo - -Você pode criar uma paleta flutuante, que é executado em um processo separado, em que você implementou suas próprias ferramentas para interagir com o ambiente Desenho. Por exemplo, quando você seleciona um elemento em uma lista hierárquica de palavras-chave, você deseja colar algum texto na janela no primeiro plano do ambiente Desenho. Para fazer isso, você pode usar a área de transferência, mas o evento de colar deve ocorrer dentro do processo Desenho. A função a seguir retorna o número do processo Desenho (se ativo): - -```4d -  // Método de projeto Número processo Desenho -  // Número processo Desenho -> Inteiro longo -  // Número processo Desenho -> Número do processo de Desenho -  - $0:=Process number("Processo Desenho") -  // Nota: Este pode não funcionar no futuro se a fonte muda -``` - -Com esta função, o método de projeto listado cola o texto recebido como parâmetro na janela do primeiro plano no ambiente Desenho (se aplicado): - -```4d -  // Método de projeto COLAR TEXTO EM DESENHO -  // PEGAR TEXTO EM DESENHO ( Text ) -  //PEGAR TEXTO EM DESENHO (Texto a pegar na janela de Desenho do primeiro plano) -  - var $1 : Text - var $vlDesenhoPID;$vlCont : Integer -  - $vlDiseñoPID:=Numero processo Desenho - If($vlDesenhoPID&NBSP;#&NBSP;0) -  // Coloque o texto na área de transferência -    SET TEXT TO PASTEBOARD($1) -  // Gerar um evento Ctrl-V / Comando-V -    POST KEY(ASCII("v");Command key mask;$vlDesenhoPID) -  // Chamar repetidamente DELAY PROCESS para que o temporizador possa passar -  // sobre o evento ao processo Desenho -    For($vlCont;1;5) -       DELAY PROCESS(Current process;1) -    End for - End if -``` - -#### Ver também - -[GET PROCESS VARIABLE](get-process-variable.md) -[Process info](../commands/process-info.md) -[Process state](process-state.md) -[SET PROCESS VARIABLE](set-process-variable.md) - -#### Propriedades - -| | | -| --- | --- | -| Número do comando | 372 | -| Thread-seguro | ✓ | - - diff --git a/versioned_docs/version-20-R8/commands-legacy/super.md b/versioned_docs/version-20-R8/commands-legacy/super.md deleted file mode 100644 index 13fdf54abe9f68..00000000000000 --- a/versioned_docs/version-20-R8/commands-legacy/super.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -id: super -title: Super -displayed_sidebar: docs ---- - -**Super**( ...param : any )
**Super** : Object - -|Parameter|Type||Description| -|---|---|---|---| -|param|any|->|Parameter(s) to pass to the parent constructor| -|Result|Object|<-|Object's parent| - - -The **Super** keyword is described in the [**Classes page**](../Concepts/classes.md#super). - -#### Properties - -| | | -| --- | --- | -| Command number | 1706 | -| Thread safe | ✓ | - -