Saltar al contenido

Teclado virtual


Antoni

Recommended Posts

publicado

Hola:

Este aporte, básicamente, es solo para viciosos de Excel, ya que no tiene demasiada utilidad salvo la de analizar el código y ver como se pueden crear controles y tratarlos todos con el mismo evento.

Se trata de informar un textbox a través de un teclado virtual creado con labels.

Es capaz de evaluar expresiones aritméticas utilizando el signo igual del teclado numérico. (Ultima tecla inferior derecha)

Podeis adaptar el tamaño con la propiedad Zoom del formulario.

Saludos.

Teclado alfa.zip

publicado

Como me considero un vicioso de Excel "por no" hacer otra cosa, entro al capote que me brinda Macro Antonio y, después de analizar sus macros, he osado trastocarlas en el teclado beta adjunto.

Ahora el teclado virtual ya no está creado con Labels sino con CommandButtons porque el interface gráfico de las teclas se parece más a botones para el común de los usuarios.

Además he añadido algunas características más:

  • El zoom del teclado se controla desde el propio teclado
  • La tecla C del teclado numérico para borrar los cálculos.
  • En la tecla 1 el símbolo | pulsando Alt Gr
  • En la tecla 4 el símbolo ~ pulsando Alt Gr
  • Cambiar ( que está 2 veces por )
  • Multilínea y barra de scroll vertical en el texto
  • Cambio del tamaño y de las Fuentes del texto (es muy aburrido ver solo letras y números Ariales)
  • Botón para venir a este foro

A mí no me escribe las vocales con diéresis: äëïöüÄËÏÖÜ

Hecho en falta algunas teclas más: Insert, Inicio, Fin, Tab, Ctrl, Alt, Win, F1-F12, Esc y Retorno de carro.

Me gustaría que se repitiera una tecla al mantenerla pulsada.

Por el momento no se me escurre nada más, ¡cuánto lo siento!

Un saludo de este forofo vicioso a tod@s que son como yo.

Teclado beta.zip

publicado

Hola:

Con esto conseguirás que la lista de fuentes sea la de cada usuario:

Sheets("Fuentes").Unprotect
Sheets("Fuentes").Cells.ClearContents
Set FontList = Application.CommandBars("Formatting").FindControl(ID:=1728)
Fuentes.Max = FontList.ListCount
For X = 0 To FontList.ListCount - 1
Sheets("Fuentes").Cells(X + 2, 1) = FontList.List(X + 1)
Next X
Sheets("Fuentes").Cells(1, 1) = "Fuentes"
Sheets("Fuentes").Protect
[/CODE]

Y con esto, que el formulario se adapte al zoom.

[CODE]Private Sub cambiaZoom_Change()
'Zoom del teclado
Me.Zoom = cambiaZoom.Value
valZoom.Caption = "Zoom: " & cambiaZoom.Value
Me.Width = 534 * (Me.Zoom / 100) '<=======
Me.Height = 280 * (Me.Zoom / 100) '<=========

End Sub
[/CODE]

Ahora me miro lo de la tecla "ametralladora" , pero,........no se, no se......

Saludos

publicado

Wao! como siempre, tenemos que arrodillarnos ante estos dioses (Macro Antonio y pegones1), y comienzo a pensar/creer que estos dos estan aliados (espero que no me hagan represalias jeje), para atacarnos jaja

Saludos amigos y sigan asi

publicado

Hola,

Antoni, me ha gustado mucho, es muy útil el archivo para los que aun sabemos poco por no decir casi nada sobre crear controles o tratarlos con el mismo evento.

Le he añadido la ametralladora que pedíais, va en el adjunto el archivo Beta2 cogido a partir del Beta1, no porque me guste mas el Beta1, (los dos son geniales), sino por seguir la línea de mejoras.

Cada línea modificada tiene un comentario "vzs_m" en donde NO he borrado el código original, y cada línea añadida "vzs_a" para que os sea fácil ver los cambios en el documento. La "ametralladora" solo es aplicada a las teclas que devuelven un disparador, pero se puede aplicar a todas, en los comentarios se ve más claro.

=========================

Pedro, no me olvido de lo tuyo, hoy mismo te hago un bonico comentario en el blog.

Buen trabajo a los 2.

Saludos a los 3.

Teclado beta2.zip

publicado

Hola Sr. Betis:

¡Cuanto tiempo!...

"Sinplemente, in presionante"

..............Y que estalle la tormenta cuanto antes y que el Rayo caiga lo mas rápido posible......

Gracias

PD ¿ Como va la resaca de la feria ?

  • 2 weeks later...
publicado

La gran contribución de verzulsan con teclas ametralladoras me ha inspirado para hacer una nueva variante del teclado virtual con dos pantallas colocadas arriba, para que las manos puestas en un teclado táctil no las oculten.

Macro Antonio, he añadido más teclas, como la de Windows y dos que echo en falta en todos los teclados, como tecla única: Ctrl + C y Ctrl + V

Una pantalla es de texto multilínea y la otra numérica, aunque en las dos se pueden evaluar los cálculos.

verzulsan, ya se puede repetir la ametralladora con las teclas Supr y Back.

Teclado beta3.zip

publicado

Macro, habrás visto que he intentado limpiar el código y creo que lo he conseguido en la función CapturarTecla con un Select Case tecla que llama a la mini rutina Repetir.

Y es que los GoTo RetornoFuncion que añadió verzulsan me resultan insufribles, jejeje!!!

He modificado AñadirTexto precisamente al revés, para quitar tanto Select.

    If Agudo Or Grave Or Dieresis Or Circunflejo Then
Select Case LCase(valor)
Case "a": offsetCar = 127: incCar = 1
Case "e", "i": offsetCar = 131: incCar = 0
Case "o": offsetCar = 131: incCar = 1
Case "u": offsetCar = 132: incCar = 0
Case Else: offsetCar = 0
End Select

If offsetCar > 0 Then
If Grave Then incCar = 0
If Agudo Then incCar = 1
If Circunflejo Then incCar = 2
If Dieresis Then incCar = incCar + 3
valor = Chr(Asc(valor) + offsetCar + incCar)
End If
End If[/CODE]

Me he guiado por el lugar que ocupan las vocales acentuadas en las tablas de códigos.

publicado

Gracias Pedro:

A veces "repito" código para una mejor comprensión de la función o del procedimiento. (Incluso para mi, ya que pasado algún tiempo, me cuesta entender mis propios códigos,......jajaja)

Saludos

  • 3 years later...
  • 2 months later...
publicado

buen día rafajm

la diferencia entre 32 bits y 64 bits radica en la declaración de las librerías.

en el modulo de clase del archivo (ClsCB) en el editor de VBA (Alt+F11) vas a encontrar estas lineas

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer  'Escucha de teclas
Private Declare Function GetTickCount Lib "kernel32" () As Long 'Tiempo en milisegundos
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)[/CODE]

Solo las debes cambiar para que queden así:

[CODE]Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'Escucha de teclas
Private Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long 'Tiempo en milisegundos
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)[/CODE]

Agregando la palabra PtrSafe y con eso ya te funciona perfectamente.

Saludos

Teclado beta3_64_bits.xls

  • 3 months later...
publicado
Hola Sr. Betis:

¡Cuanto tiempo!...

"Sinplemente, in presionante"

..............Y que estalle la tormenta cuanto antes y que el Rayo caiga lo mas rápido posible......

Gracias

PD ¿ Como va la resaca de la feria ?

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.