Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Como puedo hacer esto???? (https://www.clubdelphi.com/foros/showthread.php?t=69916)

megadigit 18-09-2010 00:00:14

Como puedo hacer esto????
 
Que tal, pues resulta que tengo un Form donde coloque 4 objetos BitBtn, y un componente que reproduce un clip en formato .swf, el caso es que lo que deseo hacer es que cuando yo cambie de foco entre los 4 BitBtn me cargue una diferente animacion en el objeto flash.

Es decir, al yo dar con la tecla tabular, se van seleccionando uno a uno cambiando de foco entre ellos, y lo que quiero hacer es que cuando se seleccione uno cargue en el componente flash un video, al dar tabular, se selecciona otro BitBtn y se carga un video diferente, espero que me alla explicado.

Ya he intentado algunas cosas pero no funciona y es que estos componentes no tienen (o no encuentro) un evento o propiedad que me sirva para este fin, cualquier ayuda se agradece.

Casimiro Notevi 18-09-2010 00:27:15

Hola megadigit, bienvenido a clubdelphi, te aconsejo leas nuestra guía de estilo, gracias.

Cita:

Empezado por megadigit
Ya he intentado algunas cosas pero no funciona y es que estos componentes no tienen (o no encuentro) un evento o propiedad que me sirva para este fin, cualquier ayuda se agradece

¿Qué has intentado y por qué no te funciona?

megadigit 18-09-2010 00:41:36

Ok, gracias, bueno pues veras, he intentado buscar dentro de los componentes un evento que me permita saber cuando el foco esta en el BitBtn, de esta forma yo podria programar el otro componente flash (que no es problema ese ya lo tengo resuelto), pero no he podido encontrar uno que me sirva.

En realidad creo que el verdadero problema es detectar el foco en el BitBtn, ese es el detalle

chingolo 18-09-2010 00:59:38

Hola megadigit, para saber quien tiene el foco existe una propiedad heredada de TWincontrol que es la funcion Focused.

Esto es de la ayuda de delphi:

Determines whether the control has input focus.

function Focused: Boolean; dynamic;

Description

Use the Focused method to see if the control is the active control. When Focused returns True, the control has the input focus. If Focused returns False, the user cannot interact with the control.


la forma de usar es simple ej: button2.focused //devuelve true o false

ahora el tratamiento del evento lo tenes que hacer en la form, poniendo la keypreview a true y en el onkeyup (si lo haces en algun otro evento anterior como en el onkeypress o keydown creeria q el foco todavia no se paso), fijate quien tiene el foco usando key=KV_TAB

Casimiro Notevi 18-09-2010 00:59:54

¿No te sirve el evento 'OnEnter'?, que salta cuando entras al botón ya sea con teclas o ratón.

megadigit 18-09-2010 01:10:33

mmm, ya habia probado con OnEnter,pero algo me hiba mal y por eso no lo use, dejame probar de nuevo, y por si tienen alguna idea explico:

El programa debe hacer lo siguiente:

-Mostrar 4 Opciones (4 BitBtn) y reproducir un previo diferente para cada uno
-Cuando de clic a alguno de ellos, envia un dato por puerto serie (eso ya esta)

Gracias por la ayuda chingolo tambien voy a probar tu opcion, y ya les cuento que paso.

megadigit 18-09-2010 05:49:44

Ya he solucionado mi "problema", disculpen las molestias, y pues bueno lo unico que hice fue lo siguiente:

Utilice el evento OnEnter como me lo propusieron, usandolo para que cuando el foco estuviera en alguno de los BitBtn se cargara la animacion o video correspondiente y para seleccionar utilice el evento OnKeyPress, programandolo asi:

if(Key=='r')
{
//Aqui hago lo que deseo
}

Y listo, creo que no era gran cosa pero me encajone tanto que no podia ver la solucion, gracias por las sugerencias

Alejo15x 06-10-2010 10:10:18

Yo en Delphi, hago algo parecido:

Código Delphi [-]
procedure Focus();
begin
 if (btnArea1.Focused = true) then
 begin
  Ventanas.Activar[1];
 end;
end;


La franja horaria es GMT +2. Ahora son las 12:23:53.

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