Yo, que acabo de empezar con FW, me he hecho un LogDebuger para ir enviando "señales", valores de variables, alertas sin que la aplicación se detenga... y lo hago con un GET...MEMO
La idea es tener una ventana "flotante" a la cual se le pueda mandar cualquier valor y lo muestre sin detener la aplicación.
Este es el código que a mi me está funcionando y que puedes coger como pauta...
- Code: Select all Expand view
#include "FiveWin.ch"
Static oDlg, nContador
//------------------------------------------------------------------------//
FUNCTION LogDebug( xValor )
Local oGet, cVar := "", nAscan
If (nAscan := AScan( GetAllWin(), {|o| o:ClassName() == "TDIALOG" .and. o:Cargo = "LogDebug" } )) = 0
nContador := 0 //Solo crear la ventana 1 unica vez
DEFINE DIALOG oDlg FROM 0,0 TO 600, 280 ;
TITLE "LogDebugFW" PIXEL
@ 0,0 GET oGet VAR cVar MEMO SIZE 140, 300 PIXEL OF oDlg
oDlg:Cargo := "LogDebug"
ACTIVATE DIALOG oDlg NOWAIT
EndIf
//Convertir xValor en tipo caracter para poder mostrar
if xValor = Nil //Nul
xValor := "Nil"
elseif ValType(xValor) = "N" //Numero
xValor := LTrim(Str(xValor))
elseif ValType(xValor) = "D" //Data
xValor := DToC(xValor)
elseif ValType(xValor) = "L" //Logic
xValor := If( xValor, ".T.", ".F." )
elseif ValType(xValor) = "A" //Array... Habria que mostrar los valores del array, pero de momento me vale
xValor := "{...}"
elseif ValType(xValor) = "O" //Object
xValor := xValor:ClassName()
endif
//Añado en la ventana FWDebug una linea más mostrando TODAS las anteriores + xValor
WITH OBJECT oDlg:aControls[1]
:VarPut( :VarGet() + CRLF + "#"+ AllTrim(Str(++nContador)) +" "+ xValor )
:Refresh()
:GoBottom()
END
RETURN Nil