Sergio, no es exactamente lo que necesitas, pero te puede servir de guia, sustituyendo el codeblock por una function que vaya mostrando/borrando el texto para al final asignar el texto al say, aunque quizás lo complicado sea el pintar/borrar encima del get, pruébalo ( quizás con el oSay2:Move( ...... ) )
Code: Select all | Expand
#include "fivewin.ch"
function main()
local cVal := Space(40)
local cPas := Space(20)
local nVal := 0
local oDlg
local oGet1
local oGet2
local oGet3
local oSay1
local oSay2
local oSay3
DEFINE DIALOG oDlg SIZE 300,500 PIXEL
@ 15, 20 SAY oSay1 PROMPT "Number:" SIZE 60, 12 PIXEL OF oDlg
@ 30, 20 GET nVal SIZE 100,12 PIXEL OF oDlg
@ 55, 20 SAY oSay2 PROMPT "" SIZE 60, 12 PIXEL OF oDlg
@ 70, 20 GET oGet2 VAR cVal SIZE 100,12 PIXEL OF oDlg CUEBANNER "<name>"
@ 115, 20 SAY oSay3 PROMPT "" SIZE 60, 12 PIXEL OF oDlg
@ 130,20 GET oGet3 VAR cPas SIZE 100,12 PIXEL OF oDlg CUEBANNER "<location>"
@ 170,20 BUTTON "OK" SIZE 100,15 PIXEL OF oDlg ACTION oDlg:End()
oGet2:bGotFocus := { | o, u | if( !Empty( o:cCueText ), oSay2:SetText( o:cCueText ), ) }
oGet2:bLostFocus := { | o, u | if( Empty( o:oGet:Buffer ), oSay2:SetText( Space( 50 ) ), ) }
oGet3:bGotFocus := { | o, u | if( !Empty( o:cCueText ), oSay3:SetText( o:cCueText ), ) }
oGet3:bLostFocus := { | o, u | if( Empty( o:oGet:Buffer ), oSay3:SetText( Space( 50 ) ), ) }
ACTIVATE DIALOG oDlg CENTERED
Return nil
Utiliza un .rc con
Code: Select all | Expand
// Add this to your resources RC file
#ifdef __FLAT__
1 24 "WindowsXP.Manifest"
#endif
#ifdef __64__
1 24 "WinXP/WindowsXP.Manifest64"
#endif