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

pmaster

[Resolvido] Teclas de atalho

15 mensagens neste tópico

Boa tarde.

Eu queria na minha aplicação em vb criar teclas de atalho.

Eu consigo fazer mas apenas uma tecla. Mas eu quero fazer uma combinação de 2 por exemplo Ctrl + L

Li que tinha mos de definir uma tecla como morta mas não faço ideia como fazer se alguem me poder dar uma luzes eu agradecia.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

para te puder ajudar, preciso que me digas como estas a fazer para utilizar as teclas de atalho. Tens algum código k possas mostrar ou podes dar mais pormenores?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

para te puder ajudar, preciso que me digas como estas a fazer para utilizar as teclas de atalho. Tens algum código k possas mostrar ou podes dar mais pormenores?

Cumps

Não vi esta questão :cheesygrin:

É só utilizares as teclas de atalho para fazer algo (tipo executar determinado código) ? É só isso ?

Mostra, como o NuGun já referiu, algum código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Eu hoje de manha fiz uma nova pesquisa eencontrei o que queria no blog que tem "na frase" o moderador jpaulino e o que me faltava era "AndAlso" e assim comsegui combinar 2 teclas para fazer um atalho.

Muito Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Eu hoje de manha fiz uma nova pesquisa eencontrei o que queria no blog que tem "na frase" o moderador jpaulino e o que me faltava era "AndAlso" e assim comsegui combinar 2 teclas para fazer um atalho.

Muito Obrigado.

Afinal eras tu!  :cheesygrin:

Mas o AndAlso não é o truque e a secção correcta é VB.NET (vou mover).

Este é o código e funciona também com o "And" apenas:

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
   If e.Control AndAlso e.KeyCode = Keys.L Then
       MessageBox.Show("Teste")
   End If
End Sub

A diferença entre o And e o AndAlso é que o AndAlso é designado um short-circuiting evaluator or seja avalia a primeira condição, depois a segunda, e por ai fora, e não em bloco. O que aconteçe é que se a primeira condição for falsa sai logo sem ligar ao resto do código. É mais rápido e melhor para evitar erros. Por exemplo, pode-se verificar se um objecto está criado na primeira condição e se estiver, aceder a um dos seus membros na segunda (coisa que com o And dá erro).

O And verifica todas as condições e se no final se o resultado for verdadeiro ou falso faz algo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou podes fazer uma coisa deste genero que acho mais simples e talvez mais indicado:

Protected Overloads Overrides Function ProcessCmdKey(ByRef m As Message, ByVal keyData As Keys) As Boolean
    Select Case keyData       
        Case Keys.Control Or Keys.L 'Ctrl + L
             'aqui vai o teu codigo para este atalho

            Return True
        Case Else
            Return False
    End Select
End Function

Se usares o evento KeyDown do respectivo form, poderá não funcionar como pretendes (se é aquilo que penso). Se o que tu queres é que este atalho, Ctrl+L, seja "executado" sempre que pressionares este combinação de teclas desde que o form tenha focos-- independentemente do controlo interno que tenha focos-- talvez esta seja a forma mais indicada. Mas como ainda não explicaste ao certo aquilo que pretendes, não vou divagar mais...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim era eu :(

Eu experimentei com o AND apenas mas não resultava, e experimentei de varias maneiras mas nao dava resultado.

Exactamente Nazgulled é mesmo isso que pretendia.

Testei e funciona na perfeição.

fiquei com uma duvida: Or significa ou, por isso a meu ver ele divia de detectar uma tecla ou outra mas detecta quando sao as duas.

Muito Obrigado :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu experimentei com o AND apenas mas não resultava, e experimentei de varias maneiras mas nao dava resultado.

Deve ter faltado definires no form o KeyPreview = True

O problema dos overrides é quando são mal utilizados podem causar problemas à aplicação. Além disso não tem o mesmo número de eventos que os que estão disponíveis no form, como o por exemplo, keydown, keyup, etc.

No entanto eu também uso muitas vezes!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema dos overrides é quando são mal utilizados podem causar problemas à aplicação.

Eu não considero isso como um "problema". Acho que basta saber o que se está fazer, sabendo isso, não há problema nenhum em usar overrides. Mas lá está, eu aqui nem expliquei nada do ProcessCmdKey, apenas coloquei código. O que pode causar problemas no futuro...

Para isso, recomendo ao pmaster que leia com atenção a documentação sobre o ProcessCmdKey na MSDN. Principalmente para perceber o que é que aqueles "returns" fazem e como devem ser usados. É um exemplo básico, mas convém saber exactamente o que estamos a fazer para prevenir os "problemas" de que o jpaulino fala.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para isso, recomendo ao pmaster que leia com atenção a documentação sobre o ProcessCmdKey na MSDN. Principalmente para perceber o que é que aqueles "returns" fazem e como devem ser usados. É um exemplo básico, mas convém saber exactamente o que estamos a fazer para prevenir os "problemas" de que o jpaulino fala.

Sem dúvida em ler sempre a documentação, mas eu não me referi apenas ao ProcessCmdKey mas sim aos overrides no geral. Podem alterar comportamentos que depois podem dar problemas no código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, mas normalmente quem faz overrides a torto e a direito, sabe o que faz, penso eu lol...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito Obrigado pela vossa ajuda :(

Vou ler a documetação sobre os overrides mesmo até para aprender mais sobre isto.

Obrigado :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é para criar teclas de atalho globais no sistema mas o que me parece que ele quer (até porque já disse que o problema estava resolvido) era teclas de atalho na aplicação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é para criar teclas de atalho globais no sistema mas o que me parece que ele quer (até porque já disse que o problema estava resolvido) era teclas de atalho na aplicação.

Sim também acho.

@programadorvb6, isto são teclas na aplicação e não globais para se poder utilizar sem que a aplicação esteja seleccionada. Fizeste confusão :)

Um abraço

jpaulino

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