Bom dia todos
Não sei se é possível mas aí vai a minha dúvida: Em clipper eu tinha uma função que recebia alguns parametros fazia o processamento e me retornava algum valor, seja pelo return ou por referencia, e nesta função eu podia ter uma tela onde entrava alguns dados processava algo e retornava o valor para quem a chamou, na programação gui sei que não funciona desta maneira, teria aluma maneira de eu poder chamar um formulário passando um ou mais parametros mesmo que por referencia (@param) e apos eu clicar num botão que feche e encerre este formulário chamado conseguir obter o valor desta variável????
em clipper fazia assim:
nRetorno := MinhaFuncao()
Function MinhFauncao()
z := y := 0
@ 10, 5 get z
@ 12, 5 get y
read
x := z + y
return(x)
ou assim
cCampo := ""
MinhaFuncao(@cCampo)
Function MinhaFuncao(@cTeste)
campoDigitado := space(20)
@ 10, 5 get campoDigitado
read
cTeste := campoDigitado
return(.t.)
Das duas maneiras eu obteria os valores de nRetorno ou de cCampo na função de chamada, E EM MINIGUI/HARBOUR tem com fazer lembrando que MinhaFuncao vai exibir um formulário onde sera inserido informações e estas serão processadas para obter o valor do retorno.
Desde já fico agradecido.
Retornar valor processado em um Formulário
Moderador: Moderadores
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Retornar valor processado em um Formulário
Se você utilizar GetProperty(<Formulario>,<Controle>,"Value"), você poderá obter os valores dos TextBoxes (por exemplo) nessa sua função que imagino que também irá ser fechada através de um botão (por exemplo). Mas no final da função você faz o return com os valores obtidos pelo GetProperty. Claro que terá que abrir variáveis para serem retornadas.
Eu fiz este exemplo, que na verdade tem duas opções de fazer algo parecido com o que você quer. Uma está comentado:
Pode remover os comentários "/*" para ver como funcionaria.
Mas não tem como tratar de forma sequencial as telas que em GUI são tratadas como objetos...
Eu fiz este exemplo, que na verdade tem duas opções de fazer algo parecido com o que você quer. Uma está comentado:
Código: Selecionar todos
#include <hmg.ch>
Function Main()
DEFINE WINDOW Form_1 AT 132 , 235 WIDTH 550 HEIGHT 350 TITLE "Main" MAIN ON INIT MsgDebug(MinhaFuncao())
/*
DEFINE LABEL Label_1
ROW 120
COL 100
WIDTH 90
HEIGHT 20
VALUE "Resultado:"
FONTNAME "Arial"
FONTSIZE 12
FONTBOLD .T.
END LABEL
DEFINE TEXTBOX Text_1
ROW 120
COL 210
WIDTH 120
HEIGHT 24
NUMERIC .T.
READONLY .T.
VALUE 0
END TEXTBOX
DEFINE BUTTON Button_1
ROW 220
COL 230
WIDTH 100
HEIGHT 28
ACTION MinhaFuncao()
CAPTION "Ver resultado"
FONTNAME "Arial"
FONTSIZE 9
END BUTTON
*/
END WINDOW
Center WINDOW Form_1
Activate WINDOW Form_1
Return Nil
Function MinhaFuncao()
Local x:= z := y := 0
Local aResultado:=InputWindow("MinhaFuncao",{"Get Z:","Get Y:"},{0,0},{10,10})
x:=aResultado[1]+aResultado[2]
If IsControlDefined ( Text_1, Form_1 )
SetProperty("Form_1","Text_1","Value",x)
Endif
Return xMas não tem como tratar de forma sequencial as telas que em GUI são tratadas como objetos...
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Retornar valor processado em um Formulário
Boa noite.
Obrigado por responder Pablo César, vou iniciar os testes, diante do que você postou já me abriu mais a mente.
Obrigado por responder Pablo César, vou iniciar os testes, diante do que você postou já me abriu mais a mente.