I found a problem on releasing recursively all controls of a window.
On a input data form, after the window is released I may need to inspect the window inner controls to process the inputted data.
Sample:
Code: Select all
#include "hmg.ch"
#include "hbqtgui.ch"
FUNCTION Main()
LOCAL oBtn_Cancel
LOCAL oBtn_Ok
LOCAL oButtonBox
LOCAL oText
LOCAL oWindow
LOCAL lOk := .F.
HbQt_ErrorSys()
DEFINE WINDOW oWindow Width 200 Height 200
Type WND_MAIN
DEFINE EditBox oText
ROW 50
Value "EditBox Text"
END TEXTBOX
DEFINE BUTTONBOX oButtonBox
ADD BUTTON oBtn_Ok ROLE BUTTON_OK ACTION ( lOk := .T., oWindow:Release() )
ADD BUTTON oBtn_Cancel ROLE BUTTON_CANCEL ACTION oWindow:Release()
END BUTTONBOX
END WINDOW
// Before window release
MsgInfo( TRIM( oText.Value ) )
ACTIVATE WINDOW oWindow
IF lOk
// Process data contained in an inner control
// After window release
MsgInfo( TRIM( oText.Value ) )
ENDIF
RETURN NIL
After the window is closed ( released ) the inputted data must be processed, but the inner control itself was also released...
This approach is very common in my systems.