Página 1 de 1

acrescenter gets opcionais durante digitacao

Enviado: 08 Ago 2012 09:13
por porter
bom dia pessoal, gostaria de saber se tem como acrescenter dois campos gets em uma inclusao de dados por exemplo tenho:

@10,10 get cod1 pict "99999"
@12,10 get cod2 pict "99999"
@14,10 get cod3 pict "99999"
@16,10 get cod4 pict "99999"
read

Quando o usuario comecar a digitar, ele quiser acrescentar mais dois campos para digitacao, teclando uma tecla de funcao por exemplo, ai abriria mais dois campos assim:

@18,10 get descricao1 pict "@!"
@12010 get descricao2 pict "@!"
read

O usuario nao quer ficar dando enter nesses dois campos porque sao muitos lancamentos, entao esses dois campos seria opcionais.

desde ja agradeco.

estou compilando com o Clipper 5.2

acrescenter gets opcionais durante digitacao

Enviado: 08 Ago 2012 10:11
por Imatech
Olá !

Possiveis opções:
1 - SETKEY, atribuir tecla de atralho para outra função
2 - When, ao entrar no GET
3 - Valid, Dependendo do conteudo digitado chama ou não outra função para complementar os dados digitados

Código: Selecionar todos


Funtion F_Get_Base()

...
SETKEY( K_F4,     { || F_Get_Opcional() } )

@10,10 get cod1 pict "99999"
@12,10 get cod2 pict "99999"
@14,10 get cod3 pict "99999"
@16,10 get cod4 pict "99999"
read

...
SETKEY( K_F4,     { || Nil } )

Return( Nil )


Funtion F_Get_Opcional()
...
@18,10 get descricao1 pict "@!"
@12010 get descricao2 pict "@!"
read
...
Return( Nil )


acrescenter gets opcionais durante digitacao

Enviado: 08 Ago 2012 10:21
por Jairo Maia
Olá Porter,

Mais um exemplo para você analisar:

Código: Selecionar todos

#include "inkey.ch"

Local OldF3 := SetKey(K_F3,{||cpadicional()})
Local cod1, cod2, cod3, cod4, descricao1, descricao2
Private dgtadicional

Clear Screen

While LastKey() != K_ESC

 dgtadicional := .f.
 @ 08,10 Say "[F3]=Habilitar Digitacao das Descricoes"

 cod1 := cod2 := cod3 := cod4 := Space( 5 )
 descricao1 := descricao2 := Space( 40 )

 @ 10,10 get cod1 pict "99999"
 @ 12,10 get cod2 pict "99999"
 @ 14,10 get cod3 pict "99999"
 @ 16,10 get cod4 pict "99999"
 @ 18,10 get descricao1 pict "@!" When dgtadicional
 @ 20,10 get descricao2 pict "@!" When dgtadicional

 Read

 If LastKey() != K_ESC
  // Fun‡Æo que salva os dados
 Endi

EndDo

SetKey(K_F3,OldF3)

Return Nil

Function cpadicional()
dgtadicional := !dgtadicional
If dgtadicional
 @ 08,10 Say "[F3]=Digitacao das Descricoes Habilitada"
Else
 @ 08,10 Say "[F3]=Habilitar Digitacao das Descricoes "
Endi
Return dgtadicional

acrescenter gets opcionais durante digitacao

Enviado: 08 Ago 2012 11:24
por alxsts
Olá!

Só uma observação: se for utilizar o primeiro exemplo postado pelo Ronaldo, é preciso declarar LOCAL GetList := {} tanto na Funtion F_Get_Base() quanto na Funtion F_Get_Opcional(). Se não forem declarados pelo programa, será usado o GetList público declarado por padrão. Neste caso, ao entrar na Funtion F_Get_Opcional(), os gets da Funtion F_Get_Base() poderiam ser destruídos (não testei pois não tenho ambiente montado aqui).

Pessoalmente, utilizaria o exemplo com a cláusula WHEN.