4D v15OBJECT GET COORDINATES |
||||||||||||||
|
4D v15
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:
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.
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:
Producto: 4D
Tema: Lenguaje
4D v15 - Actualización (standard edition) ( 4D v15)