Ir para o conteúdo
pmaster

[Resolvido] Teclas de atalho

Mensagens Recomendadas

pmaster    0
pmaster

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NuGuN    2
NuGuN

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmaster    0
pmaster

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmaster    0
pmaster

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:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade