@YuriReiner, bom dia.
Há uma forma de fazer isso: armazenando a informação em tag interno no servidor.
Para isso, será necessário criar um tag interno para cada objeto de tela que será movido. Segue um exemplo abaixo utilizando o E3 v4.8.352 com a aplicação do link que passou:
-
Criar um tag interno com o mesmo nome do retângulo da opção 2 (“Rectangle2”) dentro da pasta “Dados”;
-
Duplo clique no Tag Interno “Rectangle2” para abrir a configuração no meio do Studio. Na coluna “Valor” desse tag, escolher “Criar Array…” e em “Tamanho do Array” inserir “2” e clicar em OK;
- No script do evento MouseUp da tela “InitialScren”, inserir o seguinte script :
Sub InitialScreen_MouseUp(Button, ShiftState, MouseX, MouseY)
dim objname
set obj = Application.Item("ObjName")
set fld = Application.GetObject("Dados")
objname = obj.Value
if objname <> "" then
for each tag in fld
'Se existir um tag no servidor para este tag
if tag.Name = objname then
DIM A(2)
'MsgBox "Achou: "&tag.Name
A(0) = MouseX - Application.Item("MouseX").Value
A(1) = MouseY - Application.Item("MouseY").Value
tag.Value = A
fld.Save()
end if
next
Item(objname).X = MouseX - Application.Item("MouseX").Value
Item(objname).Y = MouseY - Application.Item("MouseY").Value
obj.Value = ""
end if
End Sub
- Por último, no evento OnStartRunning do próprio objeto de tela, no exemplo “Rectangle2”, colocar o seguinte script:
Sub Rectangle2_OnStartRunning()
A = Application.GetObject("Dados."&Name&"").Value
X = A(0)
Y = A(1)
End Sub
Por favor, testar.
Obs.1: Caso ocorra o erro 80070057 após os testes, verificar este KB.
Obs.2: Qualquer usuário que acessar a aplicação receberá essa modificação.
Sds.