PDA

Ver la Versión Completa : Emitir un aviso con un Beep cuando no se escriben datos a traves del teclado


cmfab
05-12-2011, 17:27:00
Hola a todos, cual seria el metodo mas efectivo para emitir un sonido (beep) cuando el usuario pasado x cantidad de segundos no escribe ninguna entrada desde el teclado en ciertos controles de mi aplicación. Gracias por sus atenciones

ecfisa
05-12-2011, 18:09:37
Hola.

Creo que podrías hacer algo así:

implementation
...
const
SEG = 20; // Nro de segundos;

procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview:= True;
Timer1.Interval := SEG * 1000;
Timer1.Enabled:= True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
MessageBeep(MB_ICONEXCLAMATION);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Timer1.Enabled:= False; // presiono una tecla, desactivar timer
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Timer1.Enabled:= True; // soltó la tecla, timer activado
end;


Saludos.

cmfab
05-12-2011, 19:19:01
Hola gracias por la respuesta pero se podria hacer que ese sonido se produzca con el buzzer de la placa madre. pues la pc del cliente puede no tener parlantes (speaker). se puede hacer esto ?

ecfisa
05-12-2011, 19:27:17
Hola.

Reemplazá la linea:

MessageBeep(MB_ICONEXCLAMATION);


Por la función:

Windows.Beep(800,500); // valores de frecuencia y duración a tu gusto


Saludos.

cmfab
05-12-2011, 20:21:48
Gracias de nuevo, pero sigo con el problema, como es logico el sonido cambia pero lo oigo nada mas cuando tengo los audifonos puesto, si me los quito no se escuha el sonido, será que habra que configurar algo en el setupo de la placa madre ?

thecidmx
05-12-2011, 20:35:09
Puede ser q no este conectado el parlante de la placa madre., algunas pc "modernas" no tienen bocina interna.

cmfab
05-12-2011, 20:49:28
Gracias, si no hay otras sugerencias tendre que probar en varias Pcs para ver el efecto que hace

cmfab
05-12-2011, 20:57:16
Os comento que ya logre que funcionara en una PC, así que debe ser que la mia no tiene parlantes interno o algo esta desconectado en la placa base. gracias a todos por las atenciones

ecfisa
05-12-2011, 22:11:32
Gracias de nuevo, pero sigo con el problema, como es logico el sonido cambia pero lo oigo nada mas cuando tengo los audifonos puesto, si me los quito no se escuha el sonido, será que habra que configurar algo en el setupo de la placa madre ?
Hola cmfab.

Es extraño, hice la prueba en equipo de escritorio y funciona correctamente. (Para asegurarme hasta deshabilité la placa de sonido)

Si estas trabajando con Windows 95/98/Me, revisá este enlace (http://delphi.about.com/cs/adptips2003/a/bltip0303_3.htm). De no ser así, la función Beep (http://msdn.microsoft.com/en-us/library/windows/desktop/ms679277%28v=vs.85%29.aspx), hace precisamente eso: "Generates simple tones on the speaker", revisa que tenga el speaker o buzzer, que esté correctamente conectado y que funcione.

Si las pruebas las hiciste en un portátil es probable que obtengas ese comportamiento.

Saludos.

roman
05-12-2011, 22:13:22
Perdón por la disgresión: ¿esto es para un juego o en qué clase de dictadura se requiere tal funcionalidad? :eek:

// Saludos

Casimiro Notevi
05-12-2011, 22:44:03
Perdón por la disgresión: ¿esto es para un juego o en qué clase de dictadura se requiere tal funcionalidad? :eek:
// Saludos

Eso mismo estaba pensando cuando lo he leído, cualquiera diría que es para controlar si los programadores están tecleando o "perdiendo el tiempo pensando".
Como me pasaba en una empresa en la que estuve un tiempo, que, cuando estaba pensando, me habitué a estar pulsando la tecla mayúsculas continuamente y a intervalos irregulares para que pareciese que estaba tecleando, porque en caso contrario, si había silencio de teclas, llegaba el jefe corriendo para ver si me estaba rascando algo, en lugar de "trabajar" :mad:

ecfisa
05-12-2011, 23:39:18
Eso mismo estaba pensando cuando lo he leído, cualquiera diría que es para controlar si los programadores están tecleando o "perdiendo el tiempo pensando".
Como me pasaba en una empresa en la que estuve un tiempo, que, cuando estaba pensando, me habitué a estar pulsando la tecla mayúsculas continuamente y a intervalos irregulares para que pareciese que estaba tecleando, porque en caso contrario, si había silencio de teclas, llegaba el jefe corriendo para ver si me estaba rascando algo, en lugar de "trabajar" :mad:
Si esa es la función, aquí no tendría utilidad alguna. Enseguida los empleados trabarían las teclas con un escarbadientes. con goma de mascar o un simple pisapales encima... :D:D:D

Saludos.:)

roman
05-12-2011, 23:56:21
Creo que esto viene como anillo al dedo

sKdic5rBa7g

// Saludos

ecfisa
06-12-2011, 00:19:18
Esa también es una buena opción ... :D:D:D

Saludos.

cmfab
06-12-2011, 15:42:01
Gracias a todos por sus comentarios pero a modo de explicación les comento que es la exigencia de un cliente en una aplicación, en realidad los motivos los desconozco por que lo desea de esa forma

ecfisa
06-12-2011, 17:32:59
Gracias a todos por sus comentarios pero a modo de explicación les comento que es la exigencia de un cliente en una aplicación, en realidad los motivos los desconozco por que lo desea de esa forma
Creo que todos entendimos que era un requerimiento impuesto y no tu ocurrencia. Lo que divierte es que los clientes suelen pedir cada cosa... Y lo peor viene luego: Reclamar cada cosa... :(


Un saludo. :

thecidmx
06-12-2011, 20:27:00
Y lo peor viene luego: Reclamar cada cosa... :(, por q se me hace familiar eso :P, ejejejeje, primero ponle hasta los foquitos de un arbol de navidad, y luego que son muchas luces, jejejejejejeje

Ñuño Martínez
13-12-2011, 16:04:38
Ya hay un hilo para las reclamaciones de los clientes y sucesos afines. (http://www.clubdelphi.com/foros/showthread.php?t=76741) Hagan uso de él. (Perdón por haberme puesto en Plan Moderador :))

cmfab
05-04-2012, 17:08:02
Hola a todos. Es interesante que hace algun tiempo puse un hilo con este tema, osea necesitaba hacer sonar el buzzer de la placa base en determinadas acciones de mi aplicación, se me recomendó usar la funcion Windows.Beep, pero hoy al cabo del tiempo me llama el cliente y me dice que esa funcion solo sonaba si existia tarjata de sonido con sus drivers instalados e incluso speaker instalados en la pc donde se ejecuta la aplicacion, lo cual he comprobado hoy en dia. Por eso retoco este tema a ver si alguien me sugiere como puedo hacer para obtener un sonido con cl buzzer de la placa base aunque no tenga speakers ni tarjeta de sonido en la pc. gracias de antemano

ecfisa
05-04-2012, 20:19:12
Hola cmfab.

Combiné tu último mensaje con el anterior según el punto [4] (http://www.clubdelphi.com/foros/guiaestilo.php#foros) de la guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) por tratarse del mismo tema.

Esto es a fin de evitar la duplicación de información, de todos modos el hilo inicial pasará a la cabecera de los temas del foro.
Si deseas que modifique el título, al del último mensaje por que lo consideras mas representativo, hazmelo saber por un mensaje privado y gustoso realizo el cambio.

Saludos. :)