CRIAR UM BOTAO PRA CADA TECLA
Tenho um programa que tem uma função que toma algumas atitudes de acordo a tecla pressionada. O código já ta funcionando da seguinte forma:
[txt-color=#0000f0]If KeyCode = vbKeyF2 Then[/txt-color] e aà ele faz ou não o comando. Isso já tá pronto e funcional, de modo que eu vou apertando as teclas do teclado pra tomar decisões.
O que eu gostaria agora, era criar um botão no meu form que ao ser clicado, executasse o mesmo código. No exemplo acima, a tecla F2 do teclado faz essa ação, então quero desenhar uma botão F2 no meu form, e dar a opção de o usuário teclar F2 (no teclado), ou clicar F2 através desse botão no form, tudo com o mesmo código.
[txt-color=#0000f0]If KeyCode = vbKeyF2 Then[/txt-color] e aà ele faz ou não o comando. Isso já tá pronto e funcional, de modo que eu vou apertando as teclas do teclado pra tomar decisões.
O que eu gostaria agora, era criar um botão no meu form que ao ser clicado, executasse o mesmo código. No exemplo acima, a tecla F2 do teclado faz essa ação, então quero desenhar uma botão F2 no meu form, e dar a opção de o usuário teclar F2 (no teclado), ou clicar F2 através desse botão no form, tudo com o mesmo código.
Crie um método que faça essa função, e no botão ou no evento da tecla F2 chame esse método.
Acredito ser a forma mais prática de fazer isso.
Acredito ser a forma mais prática de fazer isso.
isto ira te ajudar leia e faça o download.
http://www.macoratti.net/vb_pdv1.htm
http://www.macoratti.net/vb_pdv1.htm
Esquece, mano. Eu queria uma coisa bem mais simples, sem ter que ficar mexendo no código que tá com um monte de select case e portanto confuso. Não tem como apenas colocar um código lá no evento click do botão, dizendo que ele é igual a tecla não? Tipo um comando mais ou menos assim:
commandbutton1_click = vbkeyf2
Pois assim eu teria que fazer apenas uma alteração no botão, sem mexer no código original, então se der errado, basta tirar o botão que o programa vai estar normal, tudo funcionando novamente. Caso seja possÃvel gostaria da sintaxe.
commandbutton1_click = vbkeyf2
Pois assim eu teria que fazer apenas uma alteração no botão, sem mexer no código original, então se der errado, basta tirar o botão que o programa vai estar normal, tudo funcionando novamente. Caso seja possÃvel gostaria da sintaxe.
Neto, como indiquei logo acima... Faça dessa forma que não encomodará e você não vai ficar repetindo o código...
[txt-color=#007100][ô] Seu método[/txt-color]
Sub [txt-color=#e80000]F10[/txt-color] ()
MsgBox([Ô]F10[Ô])
End Sub
[txt-color=#007100][ô] No evento click do botão[/txt-color]
Private Sub command1_Click
[txt-color=#e80000]F10[/txt-color]
exit sub
[txt-color=#007100][ô] Quando pressionada a tecla F10[/txt-color]
[txt-color=#e80000]F10[/txt-color]
Jonathan Stecker
Citação:Crie um método que faça essa função, e no botão ou no evento da tecla F2 chame esse método.
Acredito ser a forma mais prática de fazer isso.
[txt-color=#007100][ô] Seu método[/txt-color]
Sub [txt-color=#e80000]F10[/txt-color] ()
MsgBox([Ô]F10[Ô])
End Sub
[txt-color=#007100][ô] No evento click do botão[/txt-color]
Private Sub command1_Click
[txt-color=#e80000]F10[/txt-color]
exit sub
[txt-color=#007100][ô] Quando pressionada a tecla F10[/txt-color]
[txt-color=#e80000]F10[/txt-color]
Jonathan Stecker
Cara, vamos se assim eu consigo te ajudar:
se seu código estiver assim:
[txt-color=#0000f0]If[/txt-color] KeyCode = vbKeyF2[txt-color=#0000f0] then [/txt-color]MsgBox([Ô]F2 pressionada[Ô])
faça assim:
[txt-color=#0000f0]If[/txt-color] KeyCode = vbKeyF2[txt-color=#0000f0] then [/txt-color]Chama_MsgBox()
Crie um Private, separadamente:
[txt-color=#0000f0]Private sub [/txt-color]Chama_MsgBox()
MsgBox([txt-color=#e80000][Ô]F2 pressionada[Ô][/txt-color])
[txt-color=#0000f0]End Sub[/txt-color]
AÃ você desenha o botão, da forma que desejar, e coloque o código:
[txt-color=#0000f0]Private Sub[/txt-color] BtnOk_Click()
Call Chama_MsgBox()
[txt-color=#0000f0]End Sub[/txt-color]
Espero ter ajudado.
se seu código estiver assim:
[txt-color=#0000f0]If[/txt-color] KeyCode = vbKeyF2[txt-color=#0000f0] then [/txt-color]MsgBox([Ô]F2 pressionada[Ô])
faça assim:
[txt-color=#0000f0]If[/txt-color] KeyCode = vbKeyF2[txt-color=#0000f0] then [/txt-color]Chama_MsgBox()
Crie um Private, separadamente:
[txt-color=#0000f0]Private sub [/txt-color]Chama_MsgBox()
MsgBox([txt-color=#e80000][Ô]F2 pressionada[Ô][/txt-color])
[txt-color=#0000f0]End Sub[/txt-color]
AÃ você desenha o botão, da forma que desejar, e coloque o código:
[txt-color=#0000f0]Private Sub[/txt-color] BtnOk_Click()
Call Chama_MsgBox()
[txt-color=#0000f0]End Sub[/txt-color]
Espero ter ajudado.
Rapaziada, valeu pela força mesmo, mas como to constatando, nada em vb é simples. Tudo tem que dar uma enrolada na cabeça da gente. Eu to entendendo tudo o que me passaram e sei que todas as dicas funcionam em outras situações, mas não to conseguindo enxergar como aplicar no meu caso, sem mexer no código original. Como eu disse, o programa tem uma sub form_keydown que verifica que tecla foi pressionada e faz a ação... Se eu chamar a sub de dentro do evento de um botão, ela vai fazer todos os testes da sub, e não é isso que eu quero. Seria apenas mais uma opção para o usuário, caso ele esteja usando o mouse no momento. O clique nesse botão já teria que ser a resposta e não entrar na sub novamente senão ficaria num looping infinito. Não tem realmente nada mais simples pra fazer, sem mexer no código original?
Queria apenas dizer no click do meu botão que ele equivale a pressionar a tecla F2 nesse teste da sub keydonw, o clique na verdade já seria a resposta..
sub form_keydown (opções) selectcase case1, case2, case3, etc... sendo que os case seriam F1,F2,F3, etc.
Pronto... essa é a forma como o programa tá funcionando.. nessa sub form_keydown que eu não quero mexer, e quando eu teclo, funciona perfeito.
Então só queria dizer que o clique no botão 1 equivale a pressionar F1, clique no botão 2 equivale a pressionar F2 e assim sucessivamente. Tudo isso sem ter que mexer no código original, só colocando o código nos botões. Talvez não tenha como, mas é assim que to tentando entender.
Queria apenas dizer no click do meu botão que ele equivale a pressionar a tecla F2 nesse teste da sub keydonw, o clique na verdade já seria a resposta..
sub form_keydown (opções) selectcase case1, case2, case3, etc... sendo que os case seriam F1,F2,F3, etc.
Pronto... essa é a forma como o programa tá funcionando.. nessa sub form_keydown que eu não quero mexer, e quando eu teclo, funciona perfeito.
Então só queria dizer que o clique no botão 1 equivale a pressionar F1, clique no botão 2 equivale a pressionar F2 e assim sucessivamente. Tudo isso sem ter que mexer no código original, só colocando o código nos botões. Talvez não tenha como, mas é assim que to tentando entender.
Faz assim
Form_keydown ()
if keycode=113 then
funcaof2
end if
end sub
function funcaof2()
executaacao
end function
seubotao_click()
funcaof2
end sub
Form_keydown ()
if keycode=113 then
funcaof2
end if
end sub
function funcaof2()
executaacao
end function
seubotao_click()
funcaof2
end sub
Favor ENCERRAR o tópico já que problema foi resolvido!
basta usar senkeys
coloque seus botões como array ex:
crie um botão mude a propriedade index=0 depois copie o mesmo e vai colando
fiará assim
botao(0)
botao(1)
....
depois no key press deste botão cole
Private Sub Botao_Click(Index as Integer)
Select Case Index
Case 0
Sendkey [Ô]{tab}[Ô]
case 1
[ô] valor do sendkey desejado e pronto
End Select
End Sub
coloque seus botões como array ex:
crie um botão mude a propriedade index=0 depois copie o mesmo e vai colando
fiará assim
botao(0)
botao(1)
....
depois no key press deste botão cole
Private Sub Botao_Click(Index as Integer)
Select Case Index
Case 0
Sendkey [Ô]{tab}[Ô]
case 1
[ô] valor do sendkey desejado e pronto
End Select
End Sub
Tópico encerrado , respostas não são mais permitidas