CONTROLE DO GET .. por "< >" no alguns campos determinados.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por deividdjs »

Boa tarde amigos...

sei que para muitos aqui é moleza ... tenho uma duvida ..

como faço para em um cadastro de clientes por exemplo, quando chego em um GET onde esse campo eu posso abrir uma base de dados para trazer alguns dados para preecher este campo apareceça nesses campo "< >" pra identificar que nestes campos o usuario tem a opcao de chamar a base de dados ...

EXEMPLO:

CODIGO VENDEDOR: <[___________]>

alguem tem ideia de como posso fazer isso ??

Att,

Deivid Souza
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por vagucs »

Vc pode colocar isso pelo say, vc pode usar as clausulas when e valid para rodar uma rotina sua, sempre que entrar no campo e sair deles também.

Metodos:

Código: Selecionar todos


xCampo1=space(10)
xCampo2=space(10)
xCampo3=space(10)

clear
set delimiters to '[]'

@ 10,10 say "Campo 1: " get xCampo1
set delimiters on
@ 12,10 say "Campo 2: " get xCampo2
set delimiters off
@ 13,10 say "Campo 3: " get xCampo3
read
quit
Forma 2

Código: Selecionar todos

xCampo1=space(10)
xCampo2=space(10)
xCampo3=space(10)

clear

@ 10,10 say "Campo 1: " get xCampo1
@ 12,10 say "Campo 2: [" get xCampo2;@ row(),col()+1 say ']'
@ 13,10 say "Campo 3: " get xCampo3
read


quit
Forma 3

Código: Selecionar todos

xCampo1=space(10)
xCampo2=space(10)
xCampo3=space(10)

clear

@ 10,10 say "Campo 1: " get xCampo1
@ 12,10 say "Campo 2: " get xCampo2 when show_delimiters() valid hihe_delimiters()
@ 13,10 say "Campo 3: " get xCampo3
read

quit

function show_delimiters()
@ 12,19 say '['+space(len(xCampo2))+']'
return .t.

function hihe_delimiters()
@ 12,19 say ' '+space(len(xCampo2))+' '
return .t.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
mauricioportela
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 29 Jul 2016 04:22
Localização: Vitoria da Conquista/Bahia

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por mauricioportela »

Ola!

Você quer um tipo de combobox/listbox?

Tente usar o GET LISTBOX: https://harbour.github.io/doc/clc53.htm ... istbox-cmd

Att.
Mauricio
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por vagucs »

Pelo visto ele só pediu mesmo o destaque, do que tem dados, o combox no get e listbox são bem limitados, ainda mais se forem preenchidos com dados de outras tabelas.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
mauricioportela
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 29 Jul 2016 04:22
Localização: Vitoria da Conquista/Bahia

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por mauricioportela »

ola!

eu entendi que ele queria algo como um campo de UF - por exemplo. Assim ele poderia jogar os dados de uma tabela no array. Ou, um filtro de um determinado tipo de registro.

Enfim, tentei ajudar!

Att.
Mauricio
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por deividdjs »

boa noite vagucs

exatamente isso que eu precisava .. essa forma 3 ficou excelente ... aí apartir da sua ajuda ... eu queria fazer uma função generica para usar em todos os meus gets que chama a base de dados ... como eu faço para contar os caracteres do ultimo comando "SAY" para posicionar o delimitador ...

da forma q estou pretendendo fazer ..

Código: Selecionar todos

   @15,41 say "Vendedor:" get c_codvend picture "9999" WHEN ATIVA_TABVEN() .AND. show_delimiters(c_codvend); 
                                                       VALID EVAL({||c_codvend := Strzero(VAL(c_codvend),4), .T.}) .AND. VER_VEND() .AND. hihe_delimiters(c_codvend)

queria usar as funções @ row(),col() pra contar as colunas depois do @say que vou delimitar .. como poderia fazer isso ???

Código: Selecionar todos

///------------------------------------------------------------------------------------------------------------------------------------------
// delimitador de campos com base de dados
//------------------------------------------
function show_delimiters(var)
@15,50 say '<'+space(len(var))+'>'

//@ row(),col() say '<'+space(len(var))+'>'  // ????? aqui

return .t.

function hihe_delimiters(var)
@15,50 say ' '+space(len(var))+' '

//@ row(),col() say '<'+space(len(var))+'>'     // ????? aqui 

return .t.



Forma 3

Código: Selecionar todos

xCampo1=space(10)
xCampo2=space(10)
xCampo3=space(10)

clear

@ 10,10 say "Campo 1: " get xCampo1
@ 12,10 say "Campo 2: " get xCampo2 when show_delimiters() valid hihe_delimiters()
@ 13,10 say "Campo 3: " get xCampo3
read

quit

function show_delimiters()
@ 12,19 say '['+space(len(xCampo2))+']'
return .t.

function hihe_delimiters()
@ 12,19 say ' '+space(len(xCampo2))+' '
return .t.

Muito obrigado ... abraço!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por vagucs »

A forma mais pratica seria isso.

Código: Selecionar todos


xCampo1=space(10)
xCampo2=space(10)
xCampo3=space(10)

clear

@ 10,10 say "Campo 1: " get xCampo1
@ 12,10 say "Campo 2: " get xCampo2 when show_delimiters(12,19,len(xCampo2)) valid hide_delimiters(12,19,len(xCampo2))
@ 13,10 say "Campo 3: " get xCampo3
read

quit

function show_delimiters(l,c,s)
@ l,c say '['+space(s)+']'
return .t.

function hide_delimiters(l,c,s)
@ l,c say ' '+space(s)+' '
return .t.
Poderia mudar para row e col, mas ai teria que ficar compensando sempre de acordo com a direção (cima ou baixa) da navegação entre os campos. Isso pode te levar a resultados inesperados principalmente se o usuário clicar no campo com o mouse. Então melhor assim, outra coisa, é que vc pode usar o getlist, mas na hora da criação do get, o ultimo elemento sempre será o campo anterior, e pode também levar a resultados inesperados.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por deividdjs »

vagucs escreveu:A forma mais pratica seria isso.

Código: Selecionar todos


xCampo1=space(10)
xCampo2=space(10)
xCampo3=space(10)

clear

@ 10,10 say "Campo 1: " get xCampo1
@ 12,10 say "Campo 2: " get xCampo2 when show_delimiters(12,19,len(xCampo2)) valid hide_delimiters(12,19,len(xCampo2))
@ 13,10 say "Campo 3: " get xCampo3
read

quit

function show_delimiters(l,c,s)
@ l,c say '['+space(s)+']'
return .t.

function hide_delimiters(l,c,s)
@ l,c say ' '+space(s)+' '
return .t.
Poderia mudar para row e col, mas ai teria que ficar compensando sempre de acordo com a direção (cima ou baixa) da navegação entre os campos. Isso pode te levar a resultados inesperados principalmente se o usuário clicar no campo com o mouse. Então melhor assim, outra coisa, é que vc pode usar o getlist, mas na hora da criação do get, o ultimo elemento sempre será o campo anterior, e pode também levar a resultados inesperados.

SIMPLISMENTE TOP!!! IRMÃO ... FICOU DO JEITO QUE EU PRECISAVA MESMO ... MUITO OBRIGADO !!

VOCÊS MANDAM MUITO !!

FORTE ABRAÇO!!

FIQUEM COM DEUS!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por alxsts »

Olá!

Sugestão para deixar o processo genérico:

Código: Selecionar todos

Procedure Main()

   LOCAL xCampo1 := space(10)
   LOCAL xCampo2 := space(10)
   LOCAL xCampo3 := space(10)
   LOCAL xCampo4 := .00
   LOCAL xCampo5 := Date(), GetList := {}

   Set Date British
   Set Century On
   Setmode(25,80)

   CLS
      
   @ 10,10 say "Campo 1: " get xCampo1

     //@ 12,10 say "Campo 2: " get xCampo2 when show_delimiters(12,19,len(xCampo2)) valid hide_delimiters(12,19,len(xCampo2))
   @ 12,10 say "Campo 2: " ;
           get xCampo2  ;
          when GetDelim( GetActive(), "[]" ) ;
         valid GetDelim( GetActive(), "  " )

   @ 13,10 say "Campo 3: " get xCampo3

   @ 14,10 say "Campo 4: " ;
           get xCampo4  ;
          when GetDelim( GetActive(), "[]" ) ;
         valid GetDelim( GetActive() ) 
     
   @ 15,10 say "Campo 5: " ;
           get xCampo5  ;
          when GetDelim( GetActive(), "[]" ) ;
         valid GetDelim( GetActive() ) 

   Read
      
   Wait "Tecle algo..."

RETURN

/*
function show_delimiters(l,c,s)
   @ l,c say '['+space(s)+']'
   return .t.
    
function hide_delimiters(l,c,s)
   @ l,c say ' '+space(s)+' '
return .t.
*/
FUNCTION GetDelim( oGet, cDelim )

   LOCAL cPict
   
   cDelim := If( cDelim == NIL, "  ", cDelim )

   With Object oGet
      cPict := If( :picture == NIL, "", :picture )
      @ :row, :col - 1 Say Left( cDelim, 1 )
      @ :row, :col + Len( Transform( :varGet(), cPict ) ) Say Right( cDelim, 1 )
   End With

RETURN .T.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por deividdjs »

alxsts escreveu:Olá!

Sugestão para deixar o processo genérico:

Código: Selecionar todos

Procedure Main()

   LOCAL xCampo1 := space(10)
   LOCAL xCampo2 := space(10)
   LOCAL xCampo3 := space(10)
   LOCAL xCampo4 := .00
   LOCAL xCampo5 := Date(), GetList := {}

   Set Date British
   Set Century On
   Setmode(25,80)

   CLS
      
   @ 10,10 say "Campo 1: " get xCampo1

     //@ 12,10 say "Campo 2: " get xCampo2 when show_delimiters(12,19,len(xCampo2)) valid hide_delimiters(12,19,len(xCampo2))
   @ 12,10 say "Campo 2: " ;
           get xCampo2  ;
          when GetDelim( GetActive(), "[]" ) ;
         valid GetDelim( GetActive(), "  " )

   @ 13,10 say "Campo 3: " get xCampo3

   @ 14,10 say "Campo 4: " ;
           get xCampo4  ;
          when GetDelim( GetActive(), "[]" ) ;
         valid GetDelim( GetActive() ) 
     
   @ 15,10 say "Campo 5: " ;
           get xCampo5  ;
          when GetDelim( GetActive(), "[]" ) ;
         valid GetDelim( GetActive() ) 

   Read
      
   Wait "Tecle algo..."

RETURN

/*
function show_delimiters(l,c,s)
   @ l,c say '['+space(s)+']'
   return .t.
    
function hide_delimiters(l,c,s)
   @ l,c say ' '+space(s)+' '
return .t.
*/
FUNCTION GetDelim( oGet, cDelim )

   LOCAL cPict
   
   cDelim := If( cDelim == NIL, "  ", cDelim )

   With Object oGet
      cPict := If( :picture == NIL, "", :picture )
      @ :row, :col - 1 Say Left( cDelim, 1 )
      @ :row, :col + Len( Transform( :varGet(), cPict ) ) Say Right( cDelim, 1 )
   End With

RETURN .T.

BOM DIA Alexandre..

testei as duas sugestões dos amigos e realmente essa sua função ficou bem melhor ... mais generica !! top ..

Obrigado pela ajuda ... show!

Deus abençoe vcs .. forte abraço!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por vagucs »

Muito bom cara, eu fiz o fonte correndo aqui, nem lembrei do getactive, top.
Parabéns.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

CONTROLE DO GET .. por "< >" no alguns campos determinados.

Mensagem por deividdjs »

Capaz amigo ... ambas funcionaram muito bem ... agradeço d+ a ajuda de vcs .. ficou show ... forte abraco..
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Responder