Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 21-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Solo para ejemplificar lo ya dicho por Dec;

Código Delphi [-]
function Thread(dwValue: Cardinal): Cardinal; stdcall;
begin
 Windows.Beep(Word(dwValue), dwValue shr 16);
end;
 
function Beep(wFreq, wDuration: Word): Cardinal;
begin
 Result := CreateThread(nil, 0, @Thread, Ptr(wFreq or (wDuration shl 16)), 0, PDWORD(0)^);
end;

Si el caso es usar Beep, desarrollo la idea;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 Beep(100, 1000); // La aplicacion no espera la conclusión de la API
end;
 
procedure TForm1.Button2Click(Sender: TObject); // Una posible solución
var hBeep: Cardinal;
begin
 Timer1.Enabled := True;
 hBeep := Beep(1000, 3000);
 while LongBool(WaitForSingleObject(hBeep, 10)) do
  Application.ProcessMessages;
 Timer1.Enabled := False;
end;
 
procedure TForm1.Button3Click(Sender: TObject); // falla en ~10% de tiempo
begin
 ProgressBar1.Max := 40;
 ProgressBar1.Position := 0;
 Beep(500, ProgressBar1.Max * 100);
 while ProgressBar1.Position < ProgressBar1.Max do
  begin
   ProgressBar1.Position := ProgressBar1.Position + 1;
   Application.ProcessMessages;
   Sleep(100);
  end;
end;

El anterior "Beep" modificado solo produce sonidos con duración máxima de 65.5 segundos y una milesima de exactitud, la siguiente dura hasta 10.9 minutos con una centesima de exactitud;

Código Delphi [-]
function Thread(dwValue: Cardinal): Cardinal; stdcall;
begin
 Windows.Beep(Word(dwValue), (dwValue shr 16) * 10);
end;
 
function Beep(wFreq: Word; wDuration: Cardinal): Cardinal;
begin
 Result := CreateThread(nil, 0, @Thread, Ptr(wFreq or ((wDuration div 10) shl 16)), 0, PDWORD(0)^);
end;

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como Refrescar un Dbgrid darioivan Varios 4 19-03-2008 22:24:57
Como llamar form desde otros form y regresar a la linea que se estaba ejecutando Willy Rodrigo C++ Builder 1 03-08-2007 19:36:23
refrescar como en paradox por red noe Firebird e Interbase 1 01-10-2004 09:38:48
Como refrescar un ClientDataSet Oxa78 Providers 8 25-08-2004 00:52:39
Como Refrescar un Query sitrico SQL 6 02-07-2004 21:40:35


La franja horaria es GMT +2. Ahora son las 16:04:28.


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