• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dpeneireiro

[vb 2005 express] botão disable que é accionado quando passa a enable.

7 mensagens neste tópico

Olá, sou iniciante na programação em vb 2005 express e fiz recentemente um programinha para testar algumas coisa. O programa tem, entre outros controlos um botão para iniciar os testes e outro para salvar o logo produzido pelo teste.

O que se passa é que ao fazer o teste vou escrevendo o logo numa textbox e o botão de salvar o logo está disable. Logo que acabe de fazer o teste o botão de guardar passa a enable dando a possibilidade de guardar o conteúdo da textbox num ficheiro.

Tudo funciona correctamente mas se eu primir o botão de guardar na fase de testes (quando este está disable) parece que o evento de clicar nesse botão fica memorizado e logo que o teste acaba e o botão de guardar passa a enable, a janela de guardar o ficheiro abre.....

Este efeito também acontece noutros controlos que supostamente estão disable porque os forcei  a este estado mas afinal só o desenho é que aparece sumido pois logo que passam a enable fazem todas as operações pedidas quando estavam disable.

Como posso dar a volta a esta situação????

Obrigado pela ajuda...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if me.startbutton.enabled = true then

me.stopbutton.enabled = false

end if

if me.stopbutton.enabled = true then

me.startbutton.enabled = false

end if

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que faço é quase isso:

Private Sub btnTestar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTestar.Click

   Me.btnGuardar.Enabled = False

   Me.btnTestar.Enabled = False

   ... Teste que demora uns 20 segundos...

   Me.btnGuardar.Enabled = True

   Me.btnTestar.Enabled = True

End Sub

Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click

   'If Me.btnGuardar.Enabled = True Then

      Salvar_arquivo()

   'End If

End Sub

Este if dentro da função guardar já foi uma tentativa de remediar o assunto mas não funciona.

O que se passa é que se eu clikar no botão de guardar ou no botão de testar durante o teste dentro do procedimento de testar (quando estes botões estão disable) o clik não faz nada, mas logo que os botões passem a enable, as respectivas funções são chamadas.

Parece que o evento clik fica em memória e logo que os botões passem a enable este evento é atendido.

Já estou a ficar um pouco aborrecido com isto...

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

Porque não colocas o botão gradar invisível dessa maneira não responde ao evento click.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa pode ser uma solução, mas antes de recorrer a isso queria saber se existe alguma função ou truque de dar a volta à situação, pois tenho vários butões e se os tiver que tornar a todos invisiveis o form fica sem jeito nenhum... e também ainda não experimentei, nem sei se funciona e acho que o disable deveria colocar mesmo disable e não como que adormecido.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que faço é quase isso:

Private Sub btnTestar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTestar.Click

   Me.btnGuardar.Enabled = False

   Me.btnTestar.Enabled = False

   ... Teste que demora uns 20 segundos...

   Me.btnGuardar.Enabled = True

   Me.btnTestar.Enabled = True

End Sub

Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click

   'If Me.btnGuardar.Enabled = True Then

      Salvar_arquivo()

   'End If

End Sub

Este if dentro da função guardar já foi uma tentativa de remediar o assunto mas não funciona.

O que se passa é que se eu clikar no botão de guardar ou no botão de testar durante o teste dentro do procedimento de testar (quando estes botões estão disable) o clik não faz nada, mas logo que os botões passem a enable, as respectivas funções são chamadas.

Parece que o evento clik fica em memória e logo que os botões passem a enable este evento é atendido.

Já estou a ficar um pouco aborrecido com isto...

Obrigado.

se quase nao quer dizer que seja igual, tem ifs que mudam a "historia"

mas eu nao programo em VB 2005, nao sei quase nada...

nao m admirava que o meu post fosse errado XD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou colocar um exemplo do que estou a fazer para entenderem melhor:

Criei uma windows aplication com dois botões, o botão um faz um sleep de 5 segundos e o botão 2 mostra uma mensagem. O código é o seguinte:

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Me.Button2.Enabled = False

        'Me.Button2.Visible = False

        'Me.Button2.SendToBack()

        System.Threading.Thread.Sleep(5000)

        'Me.Button2.Visible = True

        'Me.Button2.BringToFront()

        Me.Button2.Enabled = True

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        MessageBox.Show("Entrou no botão 2 ao fim do sleep!!!")

    End Sub

End Class

O que acontece é que se primir o botão 1, entro no ciclo de espera e o botão 2 passa a disable. Se entretanto carregar no botão 2, que está disable, não acontece nada mas logo que o tempo de sleep passe e o botão 2 fique novamente enable a mensagem aparece no ecrã.

O que me parece é que o clicar do botão 2 fica armazenado na memória e é atendido logo que o botão passe a enable.

Entretanto também já experimentei colocar o botão invisivel... mas acontece sempre o mesmo.

Obrigado.

0

Partilhar esta mensagem


Link 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