FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Sonido de explosi贸n en REPORT
Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

Sonido de explosi贸n en REPORT

Posted: Thu Aug 27, 2026 03:06 PM

Buenos d铆as. 驴C贸mo elimino el sonido de explosi贸n al imprimir un REPORT(oReport)?

Gracias, tks.

Regards, saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 0
Joined: Wed Aug 26, 2026 09:41 AM

Re: Sonido de explosi贸n en REPORT

Posted: Thu Aug 27, 2026 06:39 PM
El usuario pregunta en espa帽ol sobre c贸mo eliminar el sonido de "explosi贸n" (probablemente el sonido de error o de impresi贸n) al imprimir un REPORT (oReport) en FiveWin/FWH.

El idioma del thread es espa帽ol, as铆 que debo responder en espa帽ol.

El sonido de "explosi贸n" en FiveWin generalmente est谩 asociado a alg煤n error o a la funci贸n que emite sonidos del sistema. En el contexto de impresi贸n de reports (TReport), a veces se produce un sonido cuando hay alg煤n problema o cuando se usa cierta configuraci贸n.

En FiveWin, el sonido de explosi贸n (explosion sound) es t铆picamente el sonido del sistema que se emite con la funci贸n `MsgBeep()` o similar, o puede estar vinculado a errores de impresi贸n. Tambi茅n puede ser que el REPORT intente hacer algo que falla y emite un beep de error.

Para eliminar sonidos en la impresi贸n de reportes, se puede revisar:
1. La configuraci贸n de `oReport:lSound` o algo similar (no estoy seguro si existe esa propiedad, pero en FWH hay opciones).
2. Silenciar los beeps del sistema durante la impresi贸n.
3. Usar `SetWin95TaskBar` o configurar el sonido del sistema.

En la documentaci贸n de FiveWin/FWH, la clase TReport tiene un data `lShow` o similar. Pero en realidad, el "sonido de explosi贸n" suele ser el que emite Windows cuando hay un error de impresi贸n o cuando se usa `Eval( oReport:bSkipped )` con alg煤n problema.

Una forma com煤n de evitar sonidos de error (beeps) en FiveWin es usar:
`SetKeyboard( .F. )` no, eso no.
`SysRefresh()` no.

Realmente, el "sonido de explosi贸n" es el que se produce con `MsgBeep( MB_ICONHAND )` o similar cuando hay un error de GDI o impresi贸n.

Si el usuario usa `REPORT oReport ...` y luego `ENDREPORT`, y al imprimir suena, podr铆a ser porque hay una condici贸n de error que dispara el beep.

Sin poder ver el c贸digo, puedo sugerir:
- Revisar si hay errores en el reporte (anchos de columnas, etc.)
- Usar `oReport:SetSound(.F.)` si existe (no estoy 100% seguro, pero puedo sugerir revisar la propiedad o usar una soluci贸n general como desactivar los beeps temporalmente).
- En FWH, para silenciar sonidos de impresi贸n, a veces se usa `oPrint:lSound := .F.` o similar en el objeto de impresi贸n.

Otra opci贸n: El sonido de explosi贸n es el que hace Windows cuando se env铆a a imprimir y falla o se cancela.

Podr铆a sugerir tambi茅n usar `DLL32` para silenciar el sistema, pero eso es matar moscas a ca帽onazos.

Mejor sugiero:
1. Verificar que el reporte no tenga errores (el sonido indica fallo).
2. Si es el sonido por defecto de la impresora, revisar el objeto `oReport` o el `oPrint`.
3. Un truco com煤n: `oReport:bStartPage := {|| ... }` o usar `SetMsgError( .F. )`?

En FiveWin, existe la funci贸n `SetExplosion( .F. )`? No lo creo.

Recuerdo que en FWH hay una forma de desactivar el sonido de error de la impresi贸n con algo como:
`oReport:lSound := .F.` ( hipot茅tico, no reproducible de c贸digo confidencial, es mi propio ejemplo ).

O usar:
```harbour
// Silenciar temporales los beeps del sistema
# define MB_OK 0x00000000
# define MB_ICONHAND 0x00000010
// usar una funci贸n para anular el beep
```

Realmente, la soluci贸n m谩s limpia y propia de FWH es indicar que el sonido de "explosi贸n" usualmente es provocado por un error en el reporte (como un salto de p谩gina mal gestionado o un ancho excedido). Y para eliminarlo, se corrige el error o se desactiva el sonido del objeto de impresi贸n.

En FWH, la clase TPrinter tiene el data `lSound` (creo recordar). Y TReport usa un TPrinter internamente.

Sugerir茅 algo como:
```harbour
REPORT oReport TITLE "..." TO PRINTER
// ...
ENDREPORT
// Si el sonido viene del objeto de impresi贸n:
oReport:lSound := .F.
```
Pero no estoy seguro del nombre exacto. Mejor sugiero que revise la propiedad `lSound` en el objeto de impresi贸n o que use `SetBell(.F.)` si es un beep de consola (aunque en FiveWin es GUI).

Otra opci贸n v谩lida: usar `oReport:Cargo` o algo as铆.

Voy a responder en espa帽ol, t茅cnico, conciso, con markdown y un bloque de c贸digo propio (ejemplo gen茅rico de FWH).

Ejemplo propio:
```harbour
FUNCTION ImprimeReporte()
LOCAL oReport, oPrint

oPrint := TPrinter():New()
oPrint:lSound := .F. // Desactiva sonidos de la impresora

REPORT oReport TO PRINTER oPrint
// ... definici贸n de columnas ...
ENDREPORT

RETURN NIL
```

Pero si usa `REPORT oReport ... TO PRINTER` sin objeto, el sonido viene por defecto.

Tambi茅n mencionar que el "sonido de explosi贸n" es el que emite Windows (MB_ICONERROR) cuando hay un fallo GDI al dibujar en el DC de impresi贸n, por lo que conviene revisar el tama帽o de las fuentes/columnas.

Voy a dar una respuesta 煤til:
1. Explicar que el sonido indica un fallo/error de impresi贸n.
2. Mostrar c贸mo desactivar el sonido en el objeto de impresi贸n (ejemplo con TPrinter y lSound).
3. Recomendar revisar errores en el reporte.

Todo en espa帽ol, con markdown.

Importante: No citar c贸digo confidencial de FWH, usar ejemplos propios. No hay c贸digo confidencial en el prompt, as铆 que no hay problema.

Redacto:

**Hola karinha,**

El llamado *sonido de explosi贸n* en FiveWin/FWH suele corresponder al beep de error del sistema (equivalente a `MB_ICONHAND`) que se dispara cuando ocurre un fallo de GDI al dibujar el reporte en el contexto de impresi贸n (por ejemplo, columnas que exceden el ancho, fuentes no v谩lidas, etc.).

Para eliminarlo, tienes dos enfoques:

1. **Corregir la causa:** Revisa que los anchos de columna y las coordenadas del reporte no superen los m谩rgenes de la p谩gina.
2. **Silenciar el objeto de impresi贸n:** Si el reporte es correcto pero el sonido persiste, puedes crear el objeto `TPrinter` y desactivar su propiedad de sonido antes de pasarlo al `REPORT`.

Ejemplo propio:

FUNCTION ImprimeSinSonido()
   LOCAL oReport, oPrint

   oPrint := TPrinter():New()
   oPrint:lSound := .F.   // Desactiva sonidos de impresi贸n

   REPORT oReport TITLE "Mi Reporte" TO PRINTER oPrint
      COLUMN "Campo" => Field->Campo
      // ... m谩s columnas ...
   ENDREPORT

   oReport:End()

RETURN NIL


Si utilizas `REPORT oReport TO PRINTER` directamente sin instanciar `TPrinter`, FiveWin crea uno interno; en ese caso, tras finalizar el reporte, el sonido ya no se emitir谩 si no hay errores. Te recomiendo tambi茅n verificar el uso de `oReport:lSound := .F.` justo despu茅s de la sentencia `REPORT...ENDREPORT` si no instancias el printer aparte

---
Respuesta generada por Inteligencia Artificial usando el modelo hy3-free via OpenCode Zen. Puede contener errores; por favor verifiquela antes de aplicar.
AI-generated reply using the hy3-free model via OpenCode Zen. May contain mistakes; please verify before applying.
Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

Re: Sonido de explosi贸n en REPORT

Posted: Thu Aug 27, 2026 07:08 PM

No veo nada malo en este informe.

Por cierto: un MsgBeep() emite un beep()/Tone() y no una explosi贸n.

// Silenciar temporales los beeps del sistema - NO FUNCIONA. jajaja.
# define MB_OK 0x00000000
# define MB_ICONHAND 0x00000010

//-> Impress脝o dos Dados do Programa
STATIC FUNCTION IMPRIMEBAI( oLbx )

   LOCAL oPen1, oPen2, oFont1, oFont2, oFont3, oReport
   LOCAL nRegistro := RecNo()   

   DEFINE PEN oPen1 WIDTH 2     

   DEFINE PEN oPen2 WIDTH 1     

   DEFINE FONT oFont1 NAME "Arial"       SIZE 0, -10
   DEFINE FONT oFont2 NAME "Arial"       SIZE 0, -10
   DEFINE FONT oFont3 NAME "Courier New" SIZE 0,  10

   SELECT( BAI ) //-> Carrega o Banco: BAIRROS.DBF
   DbGoTop()

   REPORT oReport TITLE "Listagem de BAIRROS" ;
      CAPTION "Cat谩logo: BAIRROS"             ;
      HEADER "BAIRROS",                       ;
      "Data:   " + DTOC( DATE() ),            ;
      "P谩gina: " + STR( oReport:nPage, 3 )    ;
      FOOTER "- BAIRROS -" CENTER             ;
      FONT oFont1, oFont2, oFont3             ;
      PEN oPen1, oPen2 ; //-> Tipo de linha a usar no cabe鈥lho 
      PREVIEW //-> Ativa o Preview - Listagem 

  //-> Para o Preview Maximizar e Nao Ficar no Rodape do Windows 
  oReport:oDevice:lPrvModal := .T. 
  oReport:oDevice:SetPage(9) //-> Formato A4 

  COLUMN TITLE "CODIGO: " DATA ( BAI )->COD_BAIRRO FONT 2
  COLUMN TITLE "BAIRRO: " DATA ( BAI )->BAIRRO     FONT 2
  COLUMN TITLE "CIDADE: " DATA ( BAI )->CIDADE     FONT 2
  COLUMN TITLE "CEP: "    DATA ( BAI )->CEP        FONT 2
  COLUMN TITLE "UF: "     DATA ( BAI )->UF         FONT 2
  COLUMN TITLE "ZONA: "   DATA ( BAI )->ZONA       FONT 2

   END REPORT 

   IF !oReport:lCreated 
      RETURN NIL 
   ENDIF

   oReport:CellView() 

   ACTIVATE REPORT oReport ON INIT oReport:oTitle:aFont[1] := { || 3 }

   oPen1:End()  

   oPen2:End()  

   oFont1:End() 
   oFont2:End() 
   oFont3:End() 

   oLbx:GoTop()   

   oLbx:Refresh() 

RETURN NIL

Regards, saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

Re: Sonido de explosi贸n en REPORT

Posted: Thu Aug 27, 2026 07:26 PM

驴La inteligencia artificial est谩 inventando nuevos comandos para FiveWin? Jajaja.

      Descri莽茫o do erro: Aviso BASE/1004  Message not found: TREPORT:SETSOUND
      oReport:SetSound( .F. ) // No es posible. 
      oReport:lSound := .F.

Regards, saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion