Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Identificar el Alt+R (https://www.clubdelphi.com/foros/showthread.php?t=13996)

AGAG4 07-09-2004 02:05:17

Identificar el Alt+R
 
Ando buscando y no doy como identificar el Alt+R, para llamar alguna instrucción despues de presionar al mismo tiempo estas dos teclas, ya probe con esto y no me fucionó, solo hace referencia al ALT ya le busque como añadirle la letra "R", pero no me funciono.

if HiWord(GetKeyState(VK_MENU)) <> 0 then
ShowMessage('Shift Pulsado/Shift pressed');

roman 07-09-2004 02:57:12

Hay dos maneras dependiendo de lo que desees hacer.

Si deseas que la acción se ejecute cuando oprimes Alt-R en algún control en específico, por ejemplo un TEdit, puedes detectar la combinación en el evento OnKeyDown del control:

Código Delphi [-]
if (Key = Ord('R')) and (ssAlt in Shift) then
  HazAlgo;

Si quieres que la acción se ejecute como algo general sin importar en qué control estás situado te conviene usar un TActionList (de la paleta "Standard"). Le agregas una acción, asignas la combinación a su propiedad ShortCut y en el evento OnExecute de la acción colocas el código a ejecutar.

// Saludos

AGAG4 07-09-2004 03:06:48

Oki
 
Muchas Gracias Sr. Roman, que tenga un buen día.

Pablo Carlos 07-09-2004 03:28:35

Lo de Roman esta bien pero aporto algo...

Combinaciones de teclas
en el evento keypress
Código Delphi [-]
procedure TfrmCobranzaAsistente.DBGrid2KeyPress(Sender: TObject;
  var Key: Char);
var l_DatosPersonales_id : Longint;
begin
 if (Key = #2) then
 begin
donde reemplasas el 2 por algunas de la detalladas
108 l, 61 alt shif r, 62, 63 shif + ?,
13 enter, 27 esc, 35 shif + 3,
1 Ctrl + a, 2 ctrl + b, 3 ctrl + c, 4 ctrl + d
5 ctrl + e, 6 ctrl + f, 7 ctrl + g, 8 ctrl + h
9 ctrl + i, 10 ctrl + j, 11 ctrl +k, 12 ctrl + l
13 enter, 14 ctrl + n, 15 ctrl + o, 16 ctrl + p
17 ctrl + q, 18 ctrl + r, 19 ctrl + s, 20 ctrl + t
21 ctrl + u, 22 ctrl + v, 23 ctrl + w, 24 ctrl + x,
25 ctrl + y, 26 ctrl + z, 27 esc, 28 ctrl + ?, 29 ctrl + ],
30 ctrl + shif + 6, 31 crtl + -, 32 space, 33 shif + 1,
34 shif + 2, 35 shif + 3, 36 shif + 4, 37 shif + 5,
38 shif + 6, 39 ?, 40 shif + 8, 41 shif + 9, 42 shif + *,
43 shif + +, 44 coma, 45 guion -, 46 punto, 47 division, 48 0,
49 1, 50 2, 51 2, 52 4, 53 5, 54 6, 55 7, 56 8, 57 9,
60 y me canse de probar :p
No esta muy claro pero.... alli está
Saludos

AGAG4 07-09-2004 21:22:38

oki
 
Muchas Gracias Sr. Pablo Carlos, lo tomare en cuenta... Que tenga buen día.

jackevil99 16-04-2010 20:39:34

Hola soy nuevo en esto estoy haciendo una aplicacion
pero quiero q se efectue una accion cuando presiono una combinacion de letras
como ejemplo alt + R o control +R con ese ejemplo lo tome pero no me
funciona que me falta agregarle? intennte con :

procedure TForm1.Edit1Change(Sender: TObject);
var Key: Word; Shift: TShiftState;R:char;
begin
if (Key = Ord('R')) and (ssAlt in Shift) then
edit1.Text:='3';
end;
end.

ayudnme porfavor ,

gracias.

Lord Delfos 17-04-2010 00:34:28

Es que en el OnChange la cosa no anda, jackevil99.

La cosa funciona en el OnKeyDown, donde la variable Shift y Key ya vienen como parámetro.

Y, para agregar otra cosa más que hay que tener en cuenta (no te me enojes Román:)):

A Román se le escapó una cosa, con su código también vamos a enganchar la pulsación de Ctrl-Alt-R, Shift-Alt-R y Ctrl-Shift-Alt-R. Así que hay que tener cuidado...

Si se quiere detectar sólo la pulsación de Alt, y ninguna otra, la cosa sería así:

Código Delphi [-]
if (Key = Ord('R')) and ([ssAlt] = Shift) then
  HazAlgo;

Saludos.

jackevil99 17-04-2010 04:18:46

Hola ,gracias por responder la verdad no pense q responderian xD q buenos son :D ,pero sabes me habia creado una aplicacion para gunbound y le puse como 1er plano o siempre visible como le llaman y me anda normal dentro del gunbound pero el detalle q se me minimiza el juego cuando le hago click ala aplicacion y ahora q le coloco el onkeydown pense q con teclas no tendria la necesidad de hacerle click pero me di con la sorpresa q necesita estar seleccionada la aplicacion para q me de resultado Y_Y

use if (Key = Ord('R')) and ([ssAlt] = Shift) then
HazAlgo;
y me corre bien thx pero se podria hacer digamos alt + R + 1 entoncs HazAlgo; ?


ayudenme porfavor,gracias de ante mano,saludos.


La franja horaria es GMT +2. Ahora son las 20:08:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi