Tô precisando saber se é possível colocar nos gets uns pontinhos, mas que não sejam incluidos na hora de gravar os dados.
É mais ou menos assim:
[..................]
Aí, eu digito algo que substitui os pontos, mas esses, caso eu não preencha os campos, devem continuar visíveis, mesmo, após abandonar o get, mas não ser incluído na variável que o get edita.
Já pesquisei no fórum algo sobre o assunto, mas não encontrei. Nem mesmo na internet, em geral.
Acho que, talvez, seja até coisa, simples...
Obrigado.
gets com pontos
Moderador: Moderadores
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Inicie as variáveis CHARacter com REPLICATE('.', TamanhoDoCampo ) e ao salvar retire os pontos com STRTRAN()
exemplo"
USE CLIENTES
cNome := replicate('.',45) // Caso seu campo NOME tenha 45 caracteres
@ ...GET...cNome PICTURE "@!"
read
IF LASTKEY() <> 27
REPLACE CLIENTES->NOME WITH STRTRAN(cNome,".", "")
ENDIF
O comando GET não aceita mascaras com este artificio.
E só serviria para campcaracteres, nem pense em usar em campos numéricos ou data.
Não me lembro muito bem, mas no Summer eu usava um comando SET mais ou menos assim:
SET DELIMITERS TO []
E todos os GET apareciam cercados com estes caracteres, muito usado por monitores preto e branco para delimitar visualmente os tamanhos dos campos.
Nào me lembro de te-lo visto no Clipper 5.2/5.3
@braços :?)
Inicie as variáveis CHARacter com REPLICATE('.', TamanhoDoCampo ) e ao salvar retire os pontos com STRTRAN()
exemplo"
USE CLIENTES
cNome := replicate('.',45) // Caso seu campo NOME tenha 45 caracteres
@ ...GET...cNome PICTURE "@!"
read
IF LASTKEY() <> 27
REPLACE CLIENTES->NOME WITH STRTRAN(cNome,".", "")
ENDIF
O comando GET não aceita mascaras com este artificio.
E só serviria para campcaracteres, nem pense em usar em campos numéricos ou data.
Não me lembro muito bem, mas no Summer eu usava um comando SET mais ou menos assim:
SET DELIMITERS TO []
E todos os GET apareciam cercados com estes caracteres, muito usado por monitores preto e branco para delimitar visualmente os tamanhos dos campos.
Nào me lembro de te-lo visto no Clipper 5.2/5.3
@braços :?)
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
rochinha escreveu:Amiguinho
Inicie as variáveis CHARacter com REPLICATE('.', TamanhoDoCampo ) e ao salvar retire os pontos com STRTRAN()
exemplo"
USE CLIENTES
cNome := replicate('.',45) // Caso seu campo NOME tenha 45 caracteres
@ ...GET...cNome PICTURE "@!"
read
IF LASTKEY() <> 27
REPLACE CLIENTES->NOME WITH STRTRAN(cNome,".", "")
ENDIF
O comando GET não aceita mascaras com este artificio.
E só serviria para campcaracteres, nem pense em usar em campos numéricos ou data.
Não me lembro muito bem, mas no Summer eu usava um comando SET mais ou menos assim:
SET DELIMITERS TO []
E todos os GET apareciam cercados com estes caracteres, muito usado por monitores preto e branco para delimitar visualmente os tamanhos dos campos.
Nào me lembro de te-lo visto no Clipper 5.2/5.3
@braços :?)
Obrigadão, Rochinha. Vou fazer isso.
Quanto ao SET DELIMITERS TO [], eu o uso no Clipper 5.2. E estou com um livro de Clipper 5.0 que já traz esse comando. Ele faz isso mesmo. Só que eu gostaria também de implementar os pontos.
Em meu trabalho, um programa usado para imprimir etiquetas, não mais funciona. Aconteceu algo que não souberam me avisar do que o rapaz do CPD falou. Tipo expirar, não renovar contrato, defeito, algo assim.
O que acontece é que o programa não funciona mais e não mais funcionará. E até que venha outro será uns bons meses aí pela frente.
Então, resolvi criar um programa bem parecido com aquele, com as mesmas teclas de função, e a formatação de tela bem parecida. Por isso, estava em busca desses pontinhos no GET, como no programa antigo. Sem eles, mesmo com os [], fica muito estranho.
Valeu, amigo.
Abraços. :xau
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
Amigo, é o seguinte.rochinha escreveu:Amiguinho
Inicie as variáveis CHARacter com REPLICATE('.', TamanhoDoCampo ) e ao salvar retire os pontos com STRTRAN()
exemplo"
USE CLIENTES
cNome := replicate('.',45) // Caso seu campo NOME tenha 45 caracteres
@ ...GET...cNome PICTURE "@!"
read
IF LASTKEY() <> 27
REPLACE CLIENTES->NOME WITH STRTRAN(cNome,".", "")
ENDIF
O comando GET não aceita mascaras com este artificio.
E só serviria para campcaracteres, nem pense em usar em campos numéricos ou data.
Não me lembro muito bem, mas no Summer eu usava um comando SET mais ou menos assim:
SET DELIMITERS TO []
E todos os GET apareciam cercados com estes caracteres, muito usado por monitores preto e branco para delimitar visualmente os tamanhos dos campos.
Nào me lembro de te-lo visto no Clipper 5.2/5.3
@braços :?)
Estou precisando que em um dos gets, ao sair, (1)se não tiver completo, remova os pontos que ficaram. (2)No restante dos gets, preciso que, após se ter digitado algo, não preenchendo os campos totalmente, se tenha apagado algum ponto com a tecla delete ou tecla espaço, se recomponha os pontos. Assim:
1) [.........] => como estava o get antes de se digitar
[1546 ] => como deve ficar após sair do get
2) [...............] => como estava o get antes de se digitar
[teste...... ] => de repente, o usuário pressionou delete para apagar algo que digitou errado
[teste........] => como deve ficar o get ao sair
Eu tentei colocar um valid no get chamando uma função assim:
FUNCTION PREENCHE(VAR)
STRTRAN(VAR,"", ".")
RETURN .T.
... para trocar os espaços em branco pelos pontos, mas não deu certo: o programa travou
Também tentei colocar a mesma função com when no get seguinte. Também travou...
O que posso fazer?
Obrigado
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
Melhor, ainda, seria se pudesse ficar os pontos nos gets, sem fazer parte dele, ou seja, só como uma falsa aparência, o que facilitaria as rotinas de inclusão, pesquisa, alteração e impressão. Assim, ao invés de eu declarar as variáveis com replicate e incluir os dados com o strtran, eu estaria trabalhando normalmente com os gets padrões e as variáveis somente com seus space...Glauco Cruz Costa escreveu:Amigo, é o seguinte.rochinha escreveu:Amiguinho
Inicie as variáveis CHARacter com REPLICATE('.', TamanhoDoCampo ) e ao salvar retire os pontos com STRTRAN()
exemplo"
USE CLIENTES
cNome := replicate('.',45) // Caso seu campo NOME tenha 45 caracteres
@ ...GET...cNome PICTURE "@!"
read
IF LASTKEY() <> 27
REPLACE CLIENTES->NOME WITH STRTRAN(cNome,".", "")
ENDIF
O comando GET não aceita mascaras com este artificio.
E só serviria para campcaracteres, nem pense em usar em campos numéricos ou data.
Não me lembro muito bem, mas no Summer eu usava um comando SET mais ou menos assim:
SET DELIMITERS TO []
E todos os GET apareciam cercados com estes caracteres, muito usado por monitores preto e branco para delimitar visualmente os tamanhos dos campos.
Nào me lembro de te-lo visto no Clipper 5.2/5.3
@braços :?)
Estou precisando que em um dos gets, ao sair, (1)se não tiver completo, remova os pontos que ficaram. (2)No restante dos gets, preciso que, após se ter digitado algo, não preenchendo os campos totalmente, se tenha apagado algum ponto com a tecla delete ou tecla espaço, se recomponha os pontos. Assim:
1) [.........] => como estava o get antes de se digitar
[1546 ] => como deve ficar após sair do get
2) [...............] => como estava o get antes de se digitar
[teste...... ] => de repente, o usuário pressionou delete para apagar algo que digitou errado
[teste........] => como deve ficar o get ao sair
Eu tentei colocar um valid no get chamando uma função assim:
FUNCTION PREENCHE(VAR)
STRTRAN(VAR,"", ".")
RETURN .T.
... para trocar os espaços em branco pelos pontos, mas não deu certo: o programa travou
Também tentei colocar a mesma função com when no get seguinte. Também travou...
O que posso fazer?
Obrigado