hola:
el código que publico, hace que aparezca un dialogo en la parte inferior izquierda, y el texto lo saco es de 500 caracteres, partido en 5 partes de 100 caracteres c/u de una tabla DBF, y el dialogo después de 9 segundos desaparece.
#define CRLF Chr(13)+Chr(10)
FUNCTION MsgTray( oWnd, cIndice )
LOCAL DlgTray, cText
SELECT ALERTAS
SEEK cIndice
IF !EOF()
cText := ALLTRIM(ALERTAS->TEXTO1+CRLF+ALERTAS->TEXTO2+CRLF+ALERTAS->TEXTO3 ;
+CRLF+ALERTAS->TEXTO4+CRLF+ALERTAS->TEXTO5)
ELSE
cText := "CODE: "+cIndice+"Indice no encontrado !!"
ENDIF
DEFINE DIALOG DlgTray RESOURCE 14 OF oWnd
REDEFINE SAY PROMPT cText ID 11 OF DlgTray
REDEFINE BUTTON ID 10 OF DlgTray ACTION DlgTray:End()
DlgTray:lHelpIcon := .F.
ACTIVATE DIALOG DlgTray NOWAIT ;
ON INIT ( DlgTray:MOVE((oWnd:nHeight() - 180 ), ;
(oWnd:nWidth() - 365 )), ;
TrayTimer( DlgTray ), ;
IIF(!SndPlaySound(".\SYSTEM\SONIDO.WAV",1),MsgBeep(),) )
RETURN Nil
//----------------------------------------------------------------------
STATIC FUNCTION TrayTimer( DlgTray )
LOCAL oTmr
DEFINE TIMER oTmr OF DlgTray INTERVAL 9000 ACTION DlgTray:End()
ACTIVATE TIMER oTmr
RETURN nil
el dialogo lo hice con el resource workshop y la particularidad que debe tener el say, es marcar el "control type" que sea "left text no wrap"
a mi me funciona muy bien.
espero que te sirva
saludos desde Chile.