Obter string digitada em janela modal na tela principal

Boa tarde!

Em uma das minhas telas tenho a opção de adicionar uma nota de texto, daí é aberta uma janela modal, o usuário digita a observação (parâmetro string) e confirma. Qual é o método mais adequado para obter essa string na janela principal, que chamou a janela modal?

Atenciosamente,

-Mariana

@maricbr11, boa tarde.

Pelo que entendi, o usuário vai escrever algo na tela modal e, após fechar, irá aparecer esta informação na tela principal, certo?

Neste caso, acredito que a melhor opção é ter um tag interno (ou XObject, apenas no servidor) no Viewer (se for apenas para o usuário local) ou no Objetos de Servidor (caso seja global) para a troca de dados.

Outra forma de fazer, mas não tão didática seria escrever um registro na tabela do BD e recuperar na tela principal.

Sds.

EDIT 01: Caso não esteja utilizando uma tela indexada e esteja utilizando uma versão posterior à 4.7.234, tem a possibilidade de utilizar o método GetScreen conforme este artigo: https://kb.elipse.com.br/utilizando-os-metodos-getscreen-e-showscreen/ .

Exemplo de um botão na TelaInicial lendo um texto escrito na tela modal Tela1:

Sub CommandButton1_Click()
Msgbox Application.GetScreen("Tela1").Item("Texto1").Value
End Sub
1 Like

CommandButton na tela principal:

Sub btnOnMainScreen_Click()
	Dim flags: flags = 1 + 2 + 16 + 64 + 256 + 512 + 2048
	Dim retval
	Dim wsh
	
	Set wsh = CreateObject("WScript.Shell")
	
	Application.DoModal "NOME_TELA_MODAL??0", , , , , , , flags
	
	On Error Resume Next
	' Faz a leitura do registro '
	retval = wsh.RegRead("HKCU\appname\section\key")
	
	If Err Then
		MsgBox "Falha ao tentar ler registro.", vbCritical
	Else
		' Retorno do input da tela modal com sucesso '
		MsgBox retval
	End If		
End Sub

DrawString na tela modal, onde o usuário entra com a nota de texto:

Sub txtUserInput_Validate(Cancel, NewValue)
	Dim wsh
	Set wsh = CreateObject("WScript.Shell")

	wsh.RegWrite "HKCU\appname\section\key", NewValue
End Sub

image