Clipper On Line • Ver Tópico - Salvar variáveis

Salvar variáveis

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Salvar variáveis

Mensagempor Poka » 13 Ago 2007 11:14

# INCLUDE "MINIGUI.CH"
# INCLUDE "I_COLOR.CH"
# INCLUDE "ERROR.CH"
funct cadconv
VCODIGO:=SPAC(03)
VNOME:=SPAC(15)
VVALORCH:=0
define window TelaConv;
at 0,0;
WIDTH 490;
HEIGHT 300;
title "Manutencao de Convenios";
MODAL

@ 10 ,05 label LABEL1 value "Codigo" width 140 height 30
@ 40 ,05 label LABEL2 value "Nome" width 140 height 30
@ 70 ,05 label LABEL3 value "Valor CH" width 140 height 30

@ 10, 10*9 getBox t_codigo ;
width 4*9.5;
value @vcodigo;
pict"@k9";
tooltip "Codigo do convenio"


@ 40, 10*9 getBox t_NOME ;
width len(vnome)*9.5;
value @vnome;
pict"@!x";
Tooltip "Nome do Convenio"


@ 70, 10*9 getBox t_valor ;
width 14*9.5;
value @vVALORCH;
pict"@ke 999.999";
tooltip "valor do ch desse convenio"

@ 180,70 buttonex botaoGrava width 60 height 25;
caption "Grava" action Igrava()

end window
center window telaConv
activate window telaConv
retu nil
/////////////
func Igrava

msginfo( vCODIGO)
msginfo( VNOME )
msginfo( str(vvalorch,07,3) )

retu nil
//////////


O problema:

Eu preencho os campos , mas na funcao Igrava as variaveis vem em branco.


Agradeço qualquer ajuda.

Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 513
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

Mensagempor HASA » 13 Ago 2007 14:00

:))

TENTA ASSIM:
msginfo( TelaConv.t_NOME.VALUE)
ABRAÇO
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

variavel

Mensagempor gralak » 14 Ago 2007 11:56

Tenta assim

func Igrava ()
msginfo(TelaConv.t_codigo .value)
msginfo(TelaConv.t_NOME.value)
msginfo(TelaConv.t_valor .value)

Se não der avisa ai pra gente ve outra coisa blziha
vlw té+++
Avatar de usuário

gralak
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 232
Data de registro: 21 Mar 2007 13:28
Cidade/Estado: Cianorte/PR
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Mensagempor Poka » 14 Ago 2007 20:54

Obrigado Hasa e Gralak por responder, deu certo sim.

Não abusando da boa vontade de vocês, se puderem me dar uma ajuda no seguinte:

Estou mexendo agora no Xharbour / Minigui, e confesso que estou gostando muito, estou tentando deixar um cadastro igual ao que eu uso em clipper, ou pelo menos parecido, não gosto muito dos que eu vejo em alguns sistemas, como por exemplo, criar o codigo apos confirmar a gravação do registro. Vou explicar melhor como eu tenho em cliiper.

Eu não tenho uma rotina de Inclusao, Alteraçao , Exclusao , Consulta seprados.

No cadastro de clientes por exemplo, quando o usuario entra na rotina eu ja preencho o codigo com o proximo numero, o meu campo codigo é sempre numero, mas tipo caracter, imagine que o proximo numero seja 10 e o tamanho do campo codigo seja 3. O sistema ja preenche com 010, se o cliente teclar enter, a rotina entra para incluir.

Se o usuario digitar no lugar de 010 um numero maior que o ultimo eu emito um aviso e peço para confirmar se aceita ou não. Já teve caso do usuario digitar a data no lugar do codigo, aí já viu né.

Se o usuario no lugar do 010 digitar um numero inferior, mas que o numero esteja em branco tambem entra para inclusão. Dessa maneira fica facil na inmplantação de um sistema quando o usuario tem muitas fichas já numeradas, e que para cadastrar todas pegam em 2 ou + usuarios para preencher os cadastros.

Se o usuario digitar um numero que já existe, o sistema traz na tela o cadastro prenchido e pergunta de quer Alterar / Excluir ou Sair. Assim que sair dessa ficha o sistema já volta novamente com o ultimo numero, e assim sucessivamente.

Estando no campo codigo, teclando o F2 o sistema mostra a tela de consulta e permite a pesquisa por codigo, nome, filtro, etc.

Outra coisa, no campo codigo, que ja esta com 010 e o usuario entrar com o codigo 7 por exemplo e teclar o enter, o sistema apaga o 010 e ja preenche o campo com 007.

Já vi muitos exemplos,e ja quebrei bastante a cabeca, mas não consequi fazer.

Gostaria da seguinte ajuda.

Em clipper seria +- assim:
cadcli->(dbgobottom())

vcodigo:=strzero(val(cadcli->codigo)+1, len(cadcli->codigo) )
vnome:=spac( len( cadcli->nome) )

@ 10,02 say "Codigo do Cliente: " get vcodigo pict"@k9";
valid zeros(@vcodigo).and. Fpesquisa() .and. funger()
read


@ 12,02 say "Nome: " get vnome
"
"
"


retu nil
///////////////
stat func funger
local xret:=.t.
//em todos os cadastro tenho essa funcao que faço todos os testes
// necessarios do cadastro

if readvar() = "VCODIGO"
...
elseif readvar() ="outro campo"
...
endif

//aqui o retorno pode ser .f. ou .t.
retu xret
//////////////////////////
func zeros(xvar)
retu ( xvar:=strzero( val(xvar),len(xvar)) )


Outra coisa, quando o campo for preenchido completamente, o cursor ir para o proximo campo. Note que no VALID eu tenho varias funcoes.


Como faço isso no GetBox?????

Se puderem dar uma ajuda, agradeço, enquanto isso vou queimando a pestana por aqui.

Um abraço


Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 513
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

Mensagempor gralak » 16 Ago 2007 11:14

Caro Amigo POKA desculpa minha falha
mas vc quer fazer essa validação em que ?
XHARBOUR ou MINIGUI ?
:))
Avatar de usuário

gralak
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 232
Data de registro: 21 Mar 2007 13:28
Cidade/Estado: Cianorte/PR
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Mensagempor Stanis Luksys » 16 Ago 2007 13:00

Poka escreveu:Em clipper seria +- assim:
cadcli->(dbgobottom())
vcodigo:=strzero(val(cadcli->codigo)+1, len(cadcli->codigo) )
vnome:=spac( len( cadcli->nome) )

Isso não é bom, pois estando em rede, pode haver duplicações facilmente.

Já que você quer deixar o usuário alterar o código, o ideal seria então você criar um outro campo ID onde este sim seria sempre autoinccremental e inacessível.

Como você relaciona os clientes com outros processos? Não é pelo código?

Se você quer exibir o código antes da inclusão, uma maneira seria gravar numa outra tabela o numerador atual, pq se o cara ficar 15 minutos parado na tela pra incluir e outro pc incluir em 10, vai duplicar.

Poka escreveu:Outra coisa, quando o campo for preenchido completamente, o cursor ir para o proximo campo. Note que no VALID eu tenho varias funcoes.

Coloque no evento onchange do controle:
if ( len(this.value) == this.maxlenght, proximo_obj.setfocus() )


Falou!!!
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar de usuário

Stanis Luksys
Colaborador

Colaborador
 
Mensagens: 1329
Data de registro: 18 Jun 2005 03:04
Cidade/Estado: São Paulo
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Mensagempor Poka » 29 Ago 2007 21:16

Olá a todos

Gralak, estou usando GetBox da Minigui, mas acredito que o comando é em Xharbour mesmo.

Stanis, eu ja faço o tratamento de erros, apenas não coloquei aqui para nao estender mais o assunto. Todos os exemplos que eu vejo em sistema Windows, eles pegam o proximo codigo apos a confirmar a gravaçao do registro, aí fica fácil, mas pra mim essa maneira já fica enviavel. Todos dizem pra fazer a validação dos campos no final. Concordo, mas tem campos especificos que devem ser testado no ato.

Vi um sistema de Contabilidade uma vez que depois do usuario digitar "trocentos" campos disse que nao poderia gravar pelo motivo de algum campo invalido la no meio do cadasto. Aí não dá.

Sempre quando eu entro com o codigo eu gravo ele em branco no arquivo, se otro usuario entrar , ja vem com o proximo, se o usuario anterior nao gravar, o codigo vai ficar pulado mesmo. Se o usuario desistir de incluir, eu elimino o registro que nao foi concluido.

O seu exemplo não deu certo , dá erro de "caracter ilegal", mas eu consegui resolver.

Para dar continuidade nos meus cadastros , preciso trabalhar com macros, assim como eu fazia no Clipper.

Eu preciso usar macros principalmente na hora de gravar os dados.
Imagine o arquivo com 50 campos e ter que definir um a um. Já vi em varios exemplos, mas todos fazem assim.

Exemplo:

msginfo(TelaConv.t_codigo.value)
retorna por exemplo 003

x:="telaconv.t_codigo.value"
msginfo(x)
retorna a string "telaconv.t_codigo.value" e é isso mesmo

msgInfo(&x)
dá erro dizendo que a variavel nao existe
eu gostaria que me retornasse o conteudo, ou seja 003

Se puder me ajudar, agradeço.

Um abraço

Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 513
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

Mensagempor Stanis Luksys » 30 Ago 2007 09:37

Poka escreveu:Vi um sistema de Contabilidade uma vez que depois do usuario digitar "trocentos" campos disse que nao poderia gravar pelo motivo de algum campo invalido la no meio do cadasto. Aí não dá.

É só jogar o foco no campo com erro, num tem nada demais. Eu também faço as validações só no final do cadastro. Ficar "travando" o cadastro com validações é coisa do DOS. Era bom mesmo, mas agora o conceito mudou.
janela.campo.setfocus()


Poka escreveu:x:="telaconv.t_codigo.value"
msginfo(x)
retorna a string "telaconv.t_codigo.value"

Basta tirar das aspas:
x:= telaconv.t_codigo.value
msginfo(x)


Isso aí...
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar de usuário

Stanis Luksys
Colaborador

Colaborador
 
Mensagens: 1329
Data de registro: 18 Jun 2005 03:04
Cidade/Estado: São Paulo
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Mensagempor momente » 30 Ago 2007 14:32

Amigo Poka,

Eu também tenho cadastros assim em clipper e xharbour console, mas com a miniGUI vc tem outras vantagens, então tente pensar diferente, eu sei que é difícil, mas para o ambiente windows ter resultados vc precisará mudar sua lógica de programação. Procure separar sua maneira de programar.

Valeu!

:)Pos
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar de usuário

momente
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 496
Data de registro: 03 Mar 2005 11:53
Cidade/Estado: São Carlos-SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro