Saltar al contenido principal
Versión: Siguiente

CONVERT COORDINATES

CONVERT COORDINATES ( coordX ; coordY ; de ; a )

ParámetroTipoDescripción
coordXIntegerCoordenada horizontal de un punto (inicial)
Coordenada horizontal de un punto (convertido)
coordYIntegerCoordenada vertical de un punto(inicial)
Coordenada vertical de un punto (convertido)
deIntegerSistema de coordenadas de origen
aIntegerSistema de coordenadas a convertir el punto

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

Descripción

El comando CONVERT COORDINATESconvierte las coordenadas (x,y) de un punto de un sistema de coordenadas a otro. Los sistemas de coordenadas de entrada y salida soportados son los formularios (y subformularios), las ventanas y la pantalla. Por ejemplo, puede utilizar este comando para obtener las coordenadas en el formulario principal de un objeto perteneciente a un subformulario. Este principio facilita la creación de menús contextuales en cualquier posición personalizada.

En coordX y coordY, pase las variables que contienen las coordenadas (x,y) del punto que desea convertir. Después de ejecutar el comando, estas variables contendrán los valores convertidos.

En el parámetro de, pase el sistema de coordenadas inicial del punto de entrada y en el parámetro a, pase el sistema de coordenadas al que se debe convertir. Ambos parámetros pueden tomar el valor de una de las siguientes constantes, añadidas al tema "Ventana":

ConstanteTipoValorComentario
XY Current formEntero largo1El origen es la esquina superior izquierda del formulario actual
XY Current windowEntero largo2El origen es la esquina superior izquierda de la ventana actual
XY Main windowEntero largo4En Windows: origen es la esquina superior izquierda de la ventana principal; en OS X: igual que XY Screen
XY ScreenEntero largo3El origen es la esquina superior izquierda de la pantalla principal (igual que para el comando SCREEN COORDINATES)

Cuando este comando se llama desde el método de un subformulario o un objeto de un subformulario, y si uno de los selectores es XY Current form, a continuación, las coordenadas son relativas al subformulario en sí, no a su formulario padre.

Al convertir desde/hacia la posición de una ventana de formulario (por ejemplo, una conversión desde los resultados de GET WINDOW RECT, o con los valores pasados ​​a Open form window), XY Main window debe ser utilizado, ya que es el sistema de coordenadas utilizado por los comandos de la ventana en Windows. También se puede utilizar para este propósito en OS X, donde es equivalente a XY Screen.

Cuando de es XY Current form y el punto se encuentra en la sección del cuerpo de un formulario listado, el resultado depende del contexto de llamada del comando:

  • Si el comando se llama en el evento On Display Detail, el punto resultante se encuentra en el perímetro de visualización del registro mostrado en la pantalla.
  • Si el comando se llama fuera de un evento On Display Detail pero mientras se está editando un registro, el punto resultante se encuentra en el perímetro de visualización del registro que se está editando.
  • De lo contrario, el punto resultante se encuentra en la pantalla del primer registro.

Ejemplo 1

Usted quiere abrir un menú emergente situado en la esquina inferior izquierda del objeto "MyObject".

  // OBJECT GET COORDINATES trabaja en el sistema de coordenadas del formulario actual
  // El menú emergente dinámico utiliza el sistema de coordenadas de la ventana actual
  // Tenemos que convertir los valores
 var $left;$top;$right;$bottom : Integer
 var $menu : Text
 OBJECT GET COORDINATES(*;"MyObject";$left;$top;$right;$bottom)
 CONVERT COORDINATES($left;$bottom;XY Current form;XY Current window)
 $menu:=Create menu
 APPEND MENU ITEM($menu;"Right here")
 APPEND MENU ITEM($menu;"Right now")
 Dynamic pop up menu($menu;"";$left;$bottom)
 RELEASE MENU($menu)

Ejemplo 2

Usted quiere abrir una ventana emergente en la posición del cursor del ratón. En Windows, es necesario convertir las coordenadas desde MOUSE POSITION (con el parámetro *) devolviendo valores basados en la posición de la ventana MDI:

 var $mouseX;$mouseY;$mouseButtons : Integer
 var $window : Integer
 MOUSE POSITION($mouseX;$mouseY;$mouseButtons)
 CONVERT COORDINATES($mouseX;$mouseY;XY Current window;XY Main window)
 $window:=Open form window("PopupWindowForm";Pop up form window;$mouseX;$mouseY)
 DIALOG("PopupWindowForm")
 CLOSE WINDOW($window)

Ver también

GET WINDOW RECT
OBJECT GET COORDINATES
OBJECT SET COORDINATES
SET WINDOW RECT