PDA

Ver la Versión Completa : LLamar a otra tecla desde un Button.


BECERRA
19-05-2003, 00:19:06
Hola Compañeros:

He hecho una aplicación y la utilizo con monitores táctiles, necesito llamar a la tecla de Avance Página y a los cursores desde el onclick de un Button, ¿sabéis como hacerlo?



Gracias.

juan
19-05-2003, 01:36:39
Utiliza los virtual keys,
para los de pagina son

Virtual Key Numero Lo que es
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key

y si te refieres con lo de los cursores a las flechas son estas


VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key

__cadetill
19-05-2003, 01:49:56
Ampliando un poco la respuesta del amigo Juan, decirte que si miras en la ayuda de Win32.hlp la entrada Virtual-Key Codes encontraras todos los VK

Este archivo de ayuda esta en ..\Archivos comunes\Borland Shared\MSHelp

Espero te sirva

BECERRA
19-05-2003, 12:16:44
Sí hasta ahí bien, pero necesitaba hacer eso desde el onclick de un button.

procedure TFimprimir.ImprimirClick(Sender: TObject);
begin
key:=VK_DOWN;
end;

__cadetill
19-05-2003, 12:49:42
Si nos dices que es lo que quieres conseguir, a lo mejor no necesitas esto o se puede hacer de otra forma.

Ya nos contaras

BECERRA
19-05-2003, 13:28:15
Necesito desplazarme por los elementos de un Treeview, el problema es que utilizo una pantalla táctil y no dispongo de teclado, entonces utilizo botones en un formulario para actuar como tal, mi problema es que no se como hacer para emular el funcionamiento de los cursores y Avpag desde el onclick de un button.

__cadetill
19-05-2003, 16:26:19
Segun tengo entendido, las pantallas tactiles se comportan como si de un raton se tratara, por lo tanto, si haces un click en los nodos o en la barra de scroll del Treeview te deberia de funcionar.

Si esta solucion no te vale, tambien puedes hacer otra cosa.
Para en AvPag y el RePag puedes hacer un despazamiento por los nodos hacia adelante y hacia atras de un valor fijo de nodos (por ejemplo la cantidad maxima que puede visualizarse en pantalla)

Para los cursores seria el desplazamiento de un solo nodo.

Que te parecen las soluciones?

BECERRA
19-05-2003, 16:34:02
Me parece bien el problema es que no se desplazarme por los nodos, por eso había pensado en lo de las Sendkeys.

__cadetill
19-05-2003, 16:42:35
Bien, pues dame algo de tiempo y miro de prepararte un ejemplillo, ok? A ver si esta tarde te lo preparo

__cadetill
19-05-2003, 18:00:19
Bueno, a ver si te sirve el codigo siguiente

Para bajar


procedure TForm1.BajarClick(Sender: TObject);
var Nodo : TTreeNode;
begin
with Tree do
begin
Nodo := Selected;
Nodo := Nodo.GetNext;
if Nodo <> nil then
Selected := Nodo;
end;
end;


Para subir


procedure TForm1.SubirClick(Sender: TObject);
var Nodo : TTreeNode;
begin
with Tree do
begin
Nodo := Selected;
Nodo := Nodo.GetPrev;
if Nodo <> nil then
Selected := Nodo;
end;
end;


Para el AvPag y el RePag, simplemente seria hacer un bucle de la primera o segunda opcion

Espero te sirva

BECERRA
19-05-2003, 21:30:18
Es perfecto, muchas gracias.

Bacterion
20-05-2003, 12:11:37
Cuidado con:

with Tree do
begin
Nodo := Selected;
Nodo := Nodo.GetPrev;
if Nodo <> nil then
Selected := Nodo;
end;

El Nodo<>nil es una comprobación un poco tardía! (sobre todo porque ya ha accedido a él).

__cadetill
20-05-2003, 12:45:21
Posteado originalmente por Bacterion

El Nodo<>nil es una comprobación un poco tardía! (sobre todo porque ya ha accedido a él).

Hola

siento no estar de acuerdo contigo. La asignacion que se hace con anterioridad (Nodo := Nodo.GetPrev) puede asignar a la variable Nodo o bien un TTreeNode o bien Nil (ninguno) por lo que la comparacion es correcta ya que antes no puedes hacer la comparacion

Bacterion
20-05-2003, 12:52:51
El problema es que te olvidas del Nodo := Selected;

Nodo := Selected;
Nodo := Nodo.GetPrev;
if Nodo <> nil then

Fijate en el Nodo := Nodo.GetPrev
Si Selected es nil, Nodo.GetPrev como que hace aguas...

__cadetill
20-05-2003, 13:12:56
Por lo tanto, el error no es la comparacion a Nil, sino que faltaria hacer una comprovacion de si hay algun nodo seleccionado y quedaria el codigo algo asi


procedure TForm1.SubirClick(Sender: TObject);
var Nodo : TTreeNode;
begin
with Tree do
begin
if Selected <> Nil then
begin
Nodo := Selected;
Nodo := Nodo.GetPrev;
if Nodo <> nil then
Selected := Nodo;
end;
end;
end;


Asi mejor? ;)