Saltar para o conteúdo principal
Versão: Próximo

CONVERT COORDINATES

CONVERT COORDINATES ( xCoord ; yCoord ; de ; para )

ParâmetroTipoDescrição
xCoordVariável inteiro longo🡒Coordenada horizontal de um ponto (Inicial)
🡘Coordenada horizontal de um ponto (Convertida)
yCoordVariável inteiro longo🡒Coordenada vertical de um ponto (inicial)
🡘Coordenada vertical de um ponto (convertida)
deInteiro longo🡒Sistema de coordenadas que vai ser convertido
paraInteiro longo🡒Sistema de coordenadas para o qual vai converter

Descrição

O comando CONVERT COORDINATESconverte as coordenadas (x;y) de um ponto de um sistema de coordenadas para outro. Os sistemas de coordenada de entrada e saída compatíveis são formulários e subformulários, janelas e a tela. Por exemplo, pode usar este comando para obter as coordenadas no formulário principal de um objeto que pertence a um subformulário. Isso faz com que seja fácil criar um menu contextual para qualquer posição personalizada.

Em xCoord e yCoord, passe como variávies as coordenadas (x;y) do ponto que quiser converter. Após o comando ser executado, estas variáveis conterão os valores convertidos.

No parâmetro de, passe o sistema de coordenadas inicial que o ponto de input está usando, e no parâmetro para, passe o sistema de coordenadas para o qual vai converter. Ambos parâmetros podem tomar um dos valores de constante abaixos, adicionados ao tema "Janela":

ConstanteTipoValorComentário
XY Current formInteiro longo1A origen é o canto superior esquerdo do formulário atual
XY Current windowInteiro longo2A origem é a esquina superior esquerda na janela atual
XY Main windowInteiro longo4Em Windows: origem é a esquina superior esquerda da janela principal; em OS X: igual que XY Screen
XY ScreenInteiro longo3A origem é o canto superior esquerdo na tela principal (igual que para o comando SCREEN COORDINATES)

Quando este comando for chamado a partir do método de um subformulário ou de um objeto de subformulário, e se um dos seletores for XY Current form, então as coordenadas são relativas ao próprio subformulário, e não ao seu formulário pai.

Quando convertendo de/para a posição de uma janela formulário (por exemplo quando convertendo dos resultados de GET WINDOW RECT, ou para valores passados a Open form window), XY Main window deve ser usado já que é o sistema de coordenadas usado pelos comandos de janela em Windows. Também pode ser usado para esse propósito em OS X, onde é equivalente a XY Screen.

Quando de for XY Current form e o ponto estiver na seção corpo do formulário lista, o resultado depende do contexto de chamada do comando:

  • Se o comando for chamado no evento On Display Detail, o ponto resultante estará localizado na exibição do registro sendo desenhado em tela
  • Se o comando for chamado fora de um evento On Display Detail mas enquanto um registro estiver sendo editado, o ponto resultante estará localizado na exibição do registro sendo editado
  • De outra forma, o ponto resultate estará localizado na exibição do primeiro registro

Exemplo 1

Se quiser abrir um menu pop-up no canto esquerdo inferior do objeto "MyObject".

  // OBJECT GET COORDINATES trabalha no formulário atual das coordenadas do sistema
  // Menu dinâmico pop up usa as coordenadas de sistema da janela atual
  // Precisa converter os 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)

Exemplo 2

Se quiser abrir uma janela pop-up na posição do cursor do mouse, em Windows, precisa converter as coordenadas desde GET MOUSE (com o parâmetro *) retorna valores baseados na posição da janela MDI:

 var $mouseX;$mouseY;$mouseButtons : Integer
 var $window : Integer
 GET MOUSE($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 também

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