4D v15

OBJECT GET COORDINATES

Inicio

 
4D v15
OBJECT GET COORDINATES

OBJECT GET COORDINATES  


 

 

OBJECT GET COORDINATES ( {* ;} objeto ; izq; arriba ; derecha ; abajo )

Originalmente introducido en 4D v14 R5

Tema: Objetos (Formularios)

El comando OBJECT GET COORDINATES ahora puede devolver las coordenadas de partes específicas del listbox, es decir, columnas, encabezados, pies de página, y no sólo los del objeto listbox padre.

En versiones anteriores, este comando siempre devolvía las coordenadas del listbox padre, independientemente de la parte del listbox a la que se aplique. Ahora, cuando el parámetro object referencia un encabezado, una columna o un pie de página del listbox, las coordenadas devueltas son las del sub-objeto listbox designado.

Puede utilizar esta nueva funcionalidad, por ejemplo, para mostrar un pequeño icono en la celda de encabezado de un listbox cuando se pasa el cursor sobre ella, indicando al usuario que puede hacer clic para mostrar un menú contextual.

Nota de compatibilidad: si utiliza este comando con un encabezado, una columna o un pie de list box en sus aplicaciones existentes, las coordenadas devueltas serán diferentes después de la conversión en 4D v14 R5 o superior.  Si desea obtener las coordenadas de todo el list box, es necesario cambiar el código para que el comando se llame en el propio objeto listbox en lugar de un sub-objeto.

Por razones de coherencia, el marco de referencia utilizado es el mismo cuando el objeto es un listbox o un sub-objeto de list box: el origen es la esquina superior izquierda del formulario que contiene el objeto.  Para los sub-objetos listbox, las coordenadas devueltas son teóricas; tienen en cuenta el desplazamiento aplicado al list box antes de que ocurra un posible clipping. Como resultado, el sub-objeto puede que no sea visible (o sólo parcialmente) en sus coordenadas, y estas coordenadas pueden estar fuera de los límites del formulario (o incluso ser negativas). Para averiguar si el sub-objeto es visible (y que parte es visible) es necesario comparar las coordenadas devueltas con las coordenadas listbox, mientras considera las siguientes reglas:

  • Los límites de los sub-objetos dependen de las coordenadas de su listbox padre (devuelto por OBJECT GET COORDINATES en el listbox).
  • Los  sub-objetos encabezado y pie de página se muestran sobre el contenido de la columna: cuando las coordenadas de una columna cruzan las coordenadas de las líneas de encabezado o pie de página, a continuación, la columna no se muestra en esta intersección.
  • Los elementos de las columnas bloqueadas se muestran por encima de los elementos de las columnas desplazables: cuando las coordenadas de un elemento en una columna desplazable se cruzan las coordenadas de un elemento en una columna bloqueada, luego no se muestra en esta intersección. 

Por ejemplo, considere el siguiente gráfico, donde las coordenadas de la columna Capital son simbolizadas por un rectángulo rojo:

Como puede ver en la primera imagen, la columna es más grande que el listbox, por lo que sus coordenadas van más allá del límite inferior del listbox, incluyendo el pie de página. En la segunda imagen, el listbox se ha desplazado, por lo que la columna también se ha movido "bajos" las áreas de la columna Lenguaje y de encabezado. En cualquier caso, para calcular la parte visible real (zona verde), es necesario restar las áreas rojas.

Ejemplo  

Para las necesidades de su interfaz, usted desea rodear el área en la que el usuario hizo clic con un rectángulo rojo:

En el método objeto del listbox, puede escribir:

 OBJECT SET VISIBLE(*;"rectangleInfo";False//inicializar un rectángulo rojo
 $ptr:=OBJECT Get pointer(Object current)
 OBJECT GET COORDINATES($ptr->;$x1;$y1;$x2;$y2)
 OBJECT SET VISIBLE(*;"RedRect";True)
 OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)
 
 OBJECT GET COORDINATES(*;"LB1";$lbx1;$lby1;$lbx2;$lby2)
 If($lby1>$y1)|($lby2<$y2)&NBSP// si el área en la que se hace clic está fuera del listbox
    OBJECT SET VISIBLE(*;"Alert";True)&NBSP// mostrar un alerta
 Else
    OBJECT SET VISIBLE(*;"Alert";False)
 End if

El método devuelve las coordenadas teóricas. Si el listbox es redimensionado, puede necesitar calcular el recorte para saber qué parte es visible:

 
PROPIEDADES 

Producto: 4D
Tema: Lenguaje

 
HISTORIA 

 
ARTICLE USAGE

4D v15 - Actualización (standard edition) ( 4D v15)