Saltar al contenido principal
Versión: 20 R7 BETA

ST Get expression

ST Get expression ( {* ;} objeto {; inicioSel {; finSel}} ) -> Resultado

ParámetroTipoDescripción
*OperadorSi se especifica, objeto es un nombre de objeto (cadena)
Si se omite, objeto es un campo o una variable
objetoanyNombre del objeto (si se especifica *) o
Campo o variable (si se omite *)
inicioSelIntegerInicio de la selección
finSelIntegerFin de la selección
ResultadoTextEtiqueta de la expresión

Este comando no es hilo seguro, no puede ser utilizado en código apropiativo.

Descripción

El comando ST Get expression devuelve la primera expresión que se encuentra en la selección actual del campo o de la variable de texto con estilo designada por el parámetro objeto.

El comando devuelve la etiqueta de la expresión, como fue insertada en el objeto (por ejemplo, "mymethod" o "[tabla1]campo1"). No se devuelve el valor actual de la expresión.

Nota: este comando devuelve nombres "reales" para los campos y las tablas, incluso si se ha definido una estructura "virtual" utilizando los comandos SET TABLE TITLES y SET FIELD TITLES.

Si pasa el parámetro opcional * indica que el parámetro objeto es un nombre de objeto (cadena). Durante la ejecución, si el objeto tiene el foco, el comando devuelve la información del objeto que se está editando, y si el objeto no tiene el foco, el comando devuelve la información de la fuente de datos del objeto (variable o campo).
Si omite el parámetro *, indica que el parámetro objeto es un campo o una variable. En este caso, se pasa una referencia de campo o variable en lugar de una cadena. Durante la ejecución, el comando devuelve la información de la variable o del campo.

Los parámetros opcionales inicioSel y finSel designan una selección de texto en objeto. Los valores inicioSel y finSel expresan una selección de texto plano, sin tener en cuenta etiquetas de estilo que pueden estar presentes en el texto.

  • Si pasa inicioSel y finSel, ST Get expression busca la expresión al interior de esta selección.
  • Si pasa únicamente inicioSel o si el valor de finSel es mayor que el número total de caracteres en el objeto, el comando busca la expresión entre inicioSel y el final del texto .
  • Si omite inicioSel y finSel, el comando busca la expresión dentro de la selección de texto actual.

4D ofrece constantes predefinidas para que pueda designar automáticamente los límites de selección en los parámetros inicioSel y finSel. Estas constantes se encuentran en el tema "Texto multiestilo":

ConstanteTipoValorComentario
ST End highlightEntero largo-1001Designa el último carácter de la selección actual de texto en el objeto (*)
ST End textEntero largo0Designa el último carácter del texto contenido en el objeto
ST Start highlightEntero largo-1000Designa el primer carácter de la selección actual de texto en el objeto (*)
ST Start textEntero largo1Designa el primer carácter del texto contenido en el objeto

(*) Debe pasar un nombre de objeto en objeto para poder utilizar esta constante. Si pasa una referencia a un campo o variable, el comando se aplica a todo el texto del objeto.

Nota: si inicioSel es mayor que finSel (excepto cuando finSel es 0) , el comando no hace nada y la variable OK toma el valor 0.

Si no se encuentra una expresión en la selección, el comando devuelve una cadena vacía.

Ejemplo 1

Cuando hay un evento doble clic, usted comprueba que existe una expresión, y si es así, se muestra un diálogo en el que han recuperado sus valores para que el usuario puede modificarlos:

 Case of
    :(Form event code=On Double Clicked)
       GET HIGHLIGHT(*;"StyledText_t";startSel;endSel)
       If(ST Get content type(*;"StyledText_t";startSel;endSel)=ST Expression type)
          vExpression:=ST Get expression(*;"StyledText_t";startSel;endSel)
          $winRef:=Open form window("Dial_InsertExpr";Movable form dialog box;Horizontally centered;Vertically centered;*)
          DIALOG("Dial_InsertExpr")
          If(OK=1)
             ST INSERT EXPRESSION(*;"StyledText_t";vExpression;startSel;endSel)
             HIGHLIGHT TEXT(*;"StyledText_t";startSel;endSel)
          End if
       End if
 End case

Ejemplo 2

Usted quiere ejecutar un método 4D cuando se hace clic en un enlace de usuario:

 Case of
    :(Form event code=On Clicked)
  //recuperamos la selección
       HIGHLIGHT TEXT(*;"myText";startSel;endSel)
       If(startSel#endSel) //hay contenido seleccionado
  //obtenemos el tipo del contenido
          $CT_type:=ST Get content type(*;"myText";startSel;endSel)
          If($CT_type=ST User type) //this is a user link
             MyMethod //ejecutamos un método 4D
          End if
       End if
 End case

Ver también

ST INSERT EXPRESSION