Como pegar o nome da variavel do get ativo?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

romulobonnadio
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 08 Dez 2009 23:48
Localização: Belo Horizonte

Como pegar o nome da variavel do get ativo?

Mensagem por romulobonnadio »

Como pegar o nome da variavel do get ativo?
Tentei por ReadVar() => Ele pega o nome da variavel lida atualmente mas nao pega o get ativo.
Tentei por GetFldVar()=> Mas ele me retorna vazio quando uso o Blinker7, no exospace ele me retorna legal e ai galera oque faco agora?
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Como pegar o nome da variavel do get ativo?

Mensagem por Imatech »

Acredito que deseje o conteudo da variavel em edição no objeto get:

Código: Selecionar todos

Alert( Transform( &( readvar(), NIL ) )

Código: Selecionar todos

Alert( Transform( GetActive():varGet(), NIL ) )

Código: Selecionar todos

Alert( Transform( GetActive():name, NIL ) )
Editado pela última vez por Imatech em 05 Out 2012 15:54, em um total de 3 vezes.
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
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á

Como pegar o nome da variavel do get ativo?

Mensagem por Pablo César »

Como pegar o nome da variavel do get ativo?
Veja exemplo:

Código: Selecionar todos

cNome:=Space(38)
cTel:=Space(12)
cls
@ 12,00 Get cNome When NomVar()
@ 13,00 Get cTel When NomVar()
Read

Function NomVar()
@ 24,00 Say "Nome da atual variavel: "+PadR(readvar(),54)
Return .t.
Era isto que você precisava ?
Ele pega o nome da variavel lida atualmente mas nao pega o get ativo.
Como assim ? Pode explicar melhor o que você precisa ?
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.
romulobonnadio
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 08 Dez 2009 23:48
Localização: Belo Horizonte

Como pegar o nome da variavel do get ativo?

Mensagem por romulobonnadio »

Ex.:

@ ... get var1
CarregVar()
@ ... get var2
CarregVar()
@ ... get var3
CarregVar()
read

Function carregVar()
&GetFldVar() := "teste" // Anteriormente usando exospace ele pegava a variavel Var1 e preenchia o valor teste
// Atualmente usando blinker o GetFldVar nao retorna o nome da variavel, pois ela ainda nao esta ativa no get neste momento.
Return .t.

Esse seria o meu problema atual, pois terei que alterar todo meu sistema para colocar esta funcao dentro do Where, mesmo assim essa funcao deveria ser executada antes do where e nao dentro do where, pois utilizo ela para escrever em tela as descricoes dos campos codificados ex.:
Cliente: 000007 Romulo Bonnadio
Acima eu uso o Say para o Label Cliente
Uso o get para visualizar o codigo
e o nome do cliente geralmente eh visualizado em tela atraves de uma funcao que busca no banco, localiza a linha e coluna do get anteriormente adicionado em tela e imprime o nome.

Sera que fui claro?
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á

Como pegar o nome da variavel do get ativo?

Mensagem por Pablo César »

Sera que fui claro?
Eu estou tentando ajudar-lhe e esse não é um tom amistoso. Senão for claro ou eu não entender, desculpe: mas precisará de mais paciência !

Desculpe, mas na minha opinião essa sequência de código:
Ex.:

@ ... get var1
CarregVar()
@ ... get var2
CarregVar()
@ ... get var3
CarregVar()
read
Não está correta. A função CarregVar() como você a disponibilizou, não terá efeito algum, nem está vinculada com GET algum... apenas chama a função nas diferentes linhas, mas isso não quer dizer que tem vínculo algum.

Outra coisa, você fala da função GetFldVar() e esta função precisa de parâmetro, que seria o número de sequência dos GETs.
Anteriormente usando exospace ele pegava a variavel Var1 e preenchia o valor teste
// Atualmente usando blinker o GetFldVar nao retorna o nome da variavel, pois ela ainda nao esta ativa no get neste momento
Posso eu estar errado, mas na minha modesta opinião, isso que você está afirmando: não procede. Pois não é o linker que irá fazer a conexão do CarregVar com o Get ativo. Precisa mostrar o código ou parte dele para entendermos melhor a situação.
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.
romulobonnadio
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 08 Dez 2009 23:48
Localização: Belo Horizonte

Como pegar o nome da variavel do get ativo?

Mensagem por romulobonnadio »

Eu estou tentando ajudar-lhe e esse não é um tom amistoso. Senão for claro ou eu não entender, desculpe: mas precisará de mais paciência !
Amigo qdo escrevi acima "Sera que fui claro", desculpe mas nao foi falta de paciencia nem mesmo com intuito de lhe responder mau nao, foi simplesmente uma pergunta se eu consegui explicar meu problema a vc. Em hipotese alguma eu teria o porque de lhe tratar mau, ate mesmo porque sua intencao tem sido a melhor.
Desculpe!
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á

Como pegar o nome da variavel do get ativo?

Mensagem por Pablo César »

romulobonnadio escreveu:
Eu estou tentando ajudar-lhe e esse não é um tom amistoso. Senão for claro ou eu não entender, desculpe: mas precisará de mais paciência !
Amigo qdo escrevi acima "Sera que fui claro", desculpe mas nao foi falta de paciencia nem mesmo com intuito de lhe responder mau nao, foi simplesmente uma pergunta se eu consegui explicar meu problema a vc. Em hipotese alguma eu teria o porque de lhe tratar mau, ate mesmo porque sua intencao tem sido a melhor.
Desculpe!
Amigo, desculpas aceitas !

Voltando ao assunto do tópico, para que o seu código fique de forma funcional, você teria que apenas adicionar o when em cada get, só isso. Desta forma:

Código: Selecionar todos

cls
Store Space(10) to var1,var2,var3
@ 01,01 get var1 when CarregVar()
@ 02,01 get var2 when CarregVar()
@ 03,01 get var3 when CarregVar()
Read

Function CarregVar()
@ 24,00 Say PadC(GETFLDVAR(),80) Color "N/W"
Return .t.
Só pra informação: A função GETFLDVAR() é da CT.LIB.

Espero ter ajudado.
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.
romulobonnadio
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 08 Dez 2009 23:48
Localização: Belo Horizonte

Como pegar o nome da variavel do get ativo?

Mensagem por romulobonnadio »

Agora ira me entender claramente:

Código: Selecionar todos

Clear

Private GetList := {}
m1 := "ADFAFASDF1"
m2 := "ADFAFASDF2"
m3 := "ADFAFASDF3"


@ 10,10 say "ADF1" get m1 When fGetFldVar()
@ 11,10 say "ADF2" get m2 When fGetFldVar()
@ 12,10 say "ADF3" get m3 When fGetFldVar()
read

Function fGetFldVar()
@ row(),col()+20 say GetFldVar()
Return .T.
O retorno da GetFldVar() esta vazio, porque sera?
Muito obrigado.
Editado pela última vez por Pablo César em 05 Out 2012 16:52, 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
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á

Como pegar o nome da variavel do get ativo?

Mensagem por Pablo César »

romulobonnadio escreveu:Agora ira me entender claramente:

Código: Selecionar todos

Clear

Private GetList := {}
m1 := "ADFAFASDF1"
m2 := "ADFAFASDF2"
m3 := "ADFAFASDF3"


@ 10,10 say "ADF1" get m1 When fGetFldVar()
@ 11,10 say "ADF2" get m2 When fGetFldVar()
@ 12,10 say "ADF3" get m3 When fGetFldVar()
read

Function fGetFldVar()
@ row(),col()+20 say GetFldVar()
Return .T.
O retorno da GetFldVar() esta vazio, porque sera?
Não, não está vazio o retorno do GetFldVar(), pois está retornando o nome da variável ativa.

Olha a tela aqui:
Tela54.PNG
romulobonnadio escreveu:Como pegar o nome da variavel do get ativo?
Não era essa a sua necessidade ?
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.
romulobonnadio
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 08 Dez 2009 23:48
Localização: Belo Horizonte

Como pegar o nome da variavel do get ativo?

Mensagem por romulobonnadio »

Encontrei o erro nas libs, estava como LIB CT,ptool52
Tirei a ptool52 e a funcao GetFldVar() voltou a retornar o nome do campo corretamente.
Amigo muito obrigado pela dica.
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á

Como pegar o nome da variavel do get ativo?

Mensagem por Pablo César »

Encontrei o erro nas libs, estava como LIB CT,ptool52
Tirei a ptool52 e a funcao GetFldVar() voltou a retornar o nome do campo corretamente.
Ahhh conflito de funções entre ambas libs... Acho que o que ajudou eu ter mencionado que era da CT.lib. Bom que bom que resolveu e a culpa não é do BLINKER rs
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.
romulobonnadio
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 08 Dez 2009 23:48
Localização: Belo Horizonte

Como pegar o nome da variavel do get ativo?

Mensagem por romulobonnadio »

O engracado q o lnk tanto do exospace qto do blinker eh o mesmo rssr, so muda algumas coisas mas utilizam as mesmas libs etc
E no exospace funcionava blz rsrsr
D qq forma muit obrigado ai parceiro, tenha 1 bom fds e fica c Deus.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Como pegar o nome da variavel do get ativo?

Mensagem por alxsts »

Olá!

Só para enriquecer o conteúdo, segue um exemplo de manipulação de gets, sem usar biblioteca de terceiros. Creio que atende à necessidade do OP.

Código: Selecionar todos

Function Main()

   LOCAL cNome:=Space(38)
   LOCAL cTel:=Space(12)
   LOCAL GetList := {}

   cls

   SetBlink( .F. )

   @ 12,05 Say "Nome     :" ;
         Color "GR+/N"      ;
           Get cNome        ;
         Color "N/W, N/W*"  ;
         Pict "@K"          ; 
          When { || SetPos( GetActive():row + 10, 5 ), DispOut( GetActive():name ), .T. } ;
         Valid { || SetPos( GetActive():row + 10, 5 ), DispOut( Space( 10 ) ), .T. }

   @ 13,05 Say "Telefone :" ;
         Color "GR+/N"      ;
           Get cTel         ;
         Color "N/W, N/W*"  ;
         Pict "@K"          ;
          When  { || SetPos( GetActive():row + 10, 5 ), DispOut( GetActive():name ), .T. } ;
         Valid  { || SetPos( GetActive():row + 10, 5 ), DispOut( Space( 10 ) ), .T. }

   // faz o read sem destruir o GetList
   ReadModal( GetList )

   // Percorre o GetList alterando o conteúdo das variáveis
   AEval( GetList, { |e,p| e:setFocus(), ;
                           e:varPut( PadR( "Get " + Ltrim( Str( p ) ), Len( e:original) ) ), ;
                           e:killFocus() } )

   // Novo read
   ReadModal( GetList ); GetList := {}

   @ 17, 05 Say "Nome   : " + cNome
   @ 18, 05 Say "Fone   : " + cTel

   SetPos( 20,05 )

   WAIT "FIM - Tecle algo..."

   RETURN NIL
//--------------------------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Como pegar o nome da variavel do get ativo?

Mensagem por alxsts »

Olá!

Sim. Foi respondido assim em 2 tópicos do post: (Imatech » 05 Out 2012 14:42 e alxsts » 05 Out 2012 20:52), não tão objetivamente.
[]´s
Alexandre Santos (AlxSts)
Responder