Página 1 de 1

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

Enviado: 01 Ago 2023 16:59
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

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

Enviado: 02 Ago 2023 11:42
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.

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

Enviado: 02 Ago 2023 16:08
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

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

Enviado: 02 Ago 2023 17:28
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.

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

Enviado: 02 Ago 2023 19:46
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

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

Enviado: 02 Ago 2023 22:59
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!

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

Enviado: 03 Ago 2023 06:26
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.

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

Enviado: 03 Ago 2023 08:13
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!

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

Enviado: 03 Ago 2023 19:38
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.

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

Enviado: 04 Ago 2023 08:41
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!

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

Enviado: 04 Ago 2023 14:34
por vagucs
Muito bom cara, eu fiz o fonte correndo aqui, nem lembrei do getactive, top.
Parabéns.

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

Enviado: 05 Ago 2023 01:59
por deividdjs
Capaz amigo ... ambas funcionaram muito bem ... agradeço d+ a ajuda de vcs .. ficou show ... forte abraco..