Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

dipacheco

"Enter Virtual" após leitura de cartão

Mensagens Recomendadas

dipacheco

Boa tarde! Uma dúvida. Tenho 2 métodos de inserção de dados numa textbox... teclado e leitura de cartão. No entanto, se usar o teclado ele abrirá o outro form após pressionar a tecla enter (Já feito) mas queria que se usasse o cartão ele entrasse directo após a leitura! Como posso fazer isso??

Outra dúvida, já agora... eu queria abrir que após a abertura do 2º form este ficasse sempre visível mas fosse o form 1 a estar activo, ou seja, à espera de nova entrada de dados em que o 2º form apenas faria refresh. Isso é possível?

Obrigado desde já.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Olá dipacheco,

A menos que a leitura devolva um código de tamanho fixo e/ou com algum(ns) caractere(es) terminal(ais) vai ser muito complicado determinar quando é que a leitura terminou, isto porque o que os leitores de cartões geralmente fazem é enviar "batimentos de teclas".

É possível sim. Podes adicionar handlers às instâncias dos forms que surtam efeitos quando são disparados determinados eventos.

É uma questão de seres um pouco mais específico e falamos melhor nisso.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
dipacheco

Obrigado ribeiro55...

Então é assim... o leitura do cartão devolve sempre um código que termina com "_". Eu queria q após este caracter ele fizesse um enter obrigatório sem clicar na tecla enter por assim dizer.

Em relação à segunda questão... eu tenho um form 1 q serve apenas para ler um código e, através desse código, acedo à base de dados e tiro os dados que pretendo para o form 2. No entanto, os cartões podem estar constantemente a ser passados e o form 2 deve ser actualizado. Para tal, o form 1 deve estar sempre activo, por muito que invisível, de maneira a poder ler um novo código e carregar novos dados.

Espero ter sido explícito. Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Termina com "_", e o "_" pode repetir-se em mais algum sítio sem ser no final?

Para resolver o teu segundo problema vamos lá fazer um pequeno exemplo para perceberes:

Num projecto vazio com dois forms (Form1 e Form2) segue os seguintes passos:

1 - Acrescenta um botão no form1

2 - Acrescenta uma label no form2

3 - Coloca o seguinte código no form1 (substituí todo o código gerado, se algum)

Public Class Form1

    Public Event AconteceuAlgo(ByVal Qqcoisa As String)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        RaiseEvent AconteceuAlgo(Now.ToShortTimeString & ":" & Now.Second)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Form2.Show()
    End Sub

End Class

4 - Coloca o seguinte código no form2 (substituí todo o código gerado, se algum)

Public Class Form2

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler Form1.AconteceuAlgo, AddressOf AconteceuAlgoForm1
    End Sub

    Private Sub AconteceuAlgoForm1(ByVal qqcoisadoform1 As String)
        Label1.Text = qqcoisadoform1
    End Sub

End Class

Ao correres a aplicação, abrem-se os dois forms, e quando carregas no botão no form1, actualiza-se o label da form2 com a hora actual.

Isto funciona porque o form1 implementa um evento que passa um argumento e o botão levanta este evento com um valor qualquer para o argumento.

O segundo form, no Load, regista um handler para o evento do form1 e sempre que este evento for disparado, o método que lhe está endereçado será disparado.

Acho que os blocos de código são pequenos e fáceis de entender, mas não hesites em expor as tuas dúvidas, se as tiveres.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
dipacheco

ok ribeiro 55, vou experimentar e se tiver duvidas pergunto. obrigado de qlq forma.

em relação à primeira pergunta, o "_" não aparece em mais lado nenhum por isso quero q ele depois de encontrar "_" simplesmente dê enter sem eu ter q carregar na tecla! é possivel certo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Claro :cheesygrin:

Não sei como é que os eventos da textbox são disparados com um leitor de cartões, mas o evento TextChanged é de certeza disparado, e como tal podes ter algo como:

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If CType(sender, TextBox).Text.EndsWith("_") Then
            FazQQCoisa()
        End If
    End Sub

Onde o FazQQCoisa é uma chamada a um sub qualquer, incluíndo subs handlers de click de botões, etcetc


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.