Variavel em Macro

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

chicaomogi2014
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 03 Ago 2014 01:33
Localização: Mogi das Cruzes / SP

Variavel em Macro

Mensagem 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 &'
Editado pela última vez por Toledo em 10 Fev 2017 20:05, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

VARIAVEL EM MACRO

Mensagem por fladimir »

E se colocar entre PARENTESES passa?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
chicaomogi2014
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 03 Ago 2014 01:33
Localização: Mogi das Cruzes / SP

VARIAVEL EM MACRO

Mensagem 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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Variavel em Macro

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
chicaomogi2014
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 03 Ago 2014 01:33
Localização: Mogi das Cruzes / SP

Variavel em Macro

Mensagem por chicaomogi2014 »

Isso resolveu pra mim.

Muito bom, obrigado pela dica.
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Variavel em Macro

Mensagem 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.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Variavel em Macro

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Variavel em Macro

Mensagem 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
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Variavel em Macro

Mensagem 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 ?
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.
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Variavel em Macro

Mensagem por Claudio Soto »

Exacto Pablo
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Responder