Jump to content
dipacheco

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

Recommended Posts

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á.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.