Página 1 de 1

Variavel em Macro

Enviado: 10 Fev 2017 19:03
por chicaomogi2014
fiz uma rotina para macro usando o codigo

Código: Selecionar todos

  tloop1  := 1
   do while _tloop1 <= 10
      _varplanocartao3 := "cartao" + alltrim(str(_tloop1))
      @ _lposy+14, _lposx+45 TEXTBOX &_varplanocartao3 WIDTH 38 HEIGHT 20 SIZE 10
      _tloop1++
   enddo
O codigo acima conseguiu criar perfeitamente os TEXTBOX.

mas na hora de pegar o valor com a macro da erro.

Código: Selecionar todos

valor1 := lista.cartao1.value   ====> Assim pega o valor normalmente


valor1 := "lista.cartao1.value"
valor2 := &valor1   =============================== da a mensagem   'Erro de Sintaxe &'

VARIAVEL EM MACRO

Enviado: 10 Fev 2017 19:27
por fladimir
E se colocar entre PARENTESES passa?

VARIAVEL EM MACRO

Enviado: 10 Fev 2017 19:44
por chicaomogi2014
Continua o mesmo erro

Error BASE/1449 Erro de sintaxe: &

estranho que se chamar ela direto ele mostra o valor do TEXTBOX então teoricamente a variavel do TEXTBOX esta OK


Porque crio varios TEXTBOX com a macro & e depois chamo uma função para gravar as TEXTBOX com seus respectivos valores.

Mas se nao houver jeito, vou fazer usando uma matriz.

Variavel em Macro

Enviado: 10 Fev 2017 20:14
por Toledo
Amigo, veja se isto funciona:

Código: Selecionar todos

valor1 := "cartao1"
valor2 := GetProperty( "lista", valor1, "Value" )
Obs.: este código é referente a MiniGui, então este tópico será movido para a seção MiniGui.

Abraços,

Variavel em Macro

Enviado: 10 Fev 2017 21:35
por chicaomogi2014
Isso resolveu pra mim.

Muito bom, obrigado pela dica.

Variavel em Macro

Enviado: 11 Fev 2017 14:52
por Claudio Soto
No funciona porque las directivas tipo
lista.cartao1.value
son directivas decorativas, en realidad son directivas #translate de hb que en tiempo de compilación son sustituidas por el compilador por las funciones equivalentes, por eso en tiempo de ejecución dan error.

Variavel em Macro

Enviado: 11 Fev 2017 20:24
por JoséQuintas
Acho que assim fica mais fácil de entender:

lista.cartao1.value

Isso em execução não existe, porque é traduzido pelo pré-compilador conforme #define da minigui

Um equivalente, que também não daria certo pelo mesmo motivo.

Código: Selecionar todos

#define K_ESC 27

mVar := "K_ESC"
? &mVar
A "conversão" vale para o fonte, mas não vale na execução.
Em execução esse K_ESC não existe.
Seria a mesma situação do anterior, parece variável mas não é, vale apenas pra ser usado no fonte ANTES de compilar.

Variavel em Macro

Enviado: 11 Fev 2017 22:28
por fladimir
entendi com a explicação obrigado pelos esclarecimentos, apesar de não ser minha dúvida, acabei ficando com dúvida..kkkk..

Agora não já entendi...vlw

Variavel em Macro

Enviado: 12 Fev 2017 20:52
por Pablo César
Bom eu não sou muito bom no português ( nem no inglês, nem espanhol Imagem ) mas vou tentar te explicar...

O que quer dizer o Dr. Claudio é que usando a função GetProperty( "lista", valor1, "Value" ) direto, não irá dar erro porque da forma de lista.cartao1.value isto é: <formulario>.<controle>.<propriedade> é a forma interpretada porque usa o #xtranslate. E como o formulário e/ou controle não estão ainda ativados ou definidos, o compilador não os reconhece. Mas a função irá compilar e só dará erro caso não exista.

Eu prefiro direto da função. Se bem que as vezes isso contraria a indicação de uso. Porque se no futuro a função sofre alguma alteração, você terá também que fazer alterações do seu código. Embora a interpretada, sempre manterá retrocompatibilidade.

Me supe explicar Claudio ? Estoy correcto ?

Variavel em Macro

Enviado: 13 Fev 2017 13:37
por Claudio Soto
Exacto Pablo