Tom -
The line numbers you refer to do not match up with my build 257 source code.
It appears that you have added about 20 lines of code to _DCGETBX.PRG in build 257.
Code: Select all
I assume that there is an object involved almost having no "handleEvent" method, for what reason ever. Could that be the cause?
It is possible that an object may not have a handleEvent method, but the only way I see this happening is if you have a PostAppEvent() call and pass it incorrect parameters. Regardless, I don't believe that it should cause a fatal error. Instead, the normal error handler would be invoked and you would get a "object has no method with this name:" error.
I'm concerned that a memory corruption is more likely at fault here.
I intensively work with subclassing (browses, statics)
I don't see why subclassing should cause such problems. I do know, however, that you also use a lot of owner-drawing, and it may be related to a malfunction in that system. Owner-drawing is performed in another thread and care must be taken to not output anything to the screen in your owner-drawing function. For example, calling WTF in the ownerdraw thread will lock up the system.
Jack Duijf has contributed much over the past few years. This was added in build 260.
Also, he made some improvements to his tooltip system to prevent fatal errors.
Code: Select all
IF Valtype(oXbp) == 'O' .AND. IsMethod(oXbp,'HandleEvent')
IF !oGetList:IsDesignOn .OR. oParentDlg == NIL .OR. oXbp == oParentDlg
IF nEvent == xbeP_Quit
QUIT
ENDIF
//
// J. Duijf 17-07-2014
// Required for my cell-edit class Dc_xbpCellEditBrowse
//
If nEvent <> xbeP_Keyboard
oXbp:handleEvent(@nEvent,@mp1,@mp2 ) // J. Duijf 17-07-2014 Pass event parameters by refference
Else
//
// Jack Duijf 17-07-2014
// Sometimes is is NOT possible to signal that the key has been
// processed. This results in double handling, or (in case of <Enter>) unwanted behaviour
// If the ::keyhandlingcompleted is set, then further processing is suppressed.
//
::keyhandlingcompleted := FALSE
oXbp:handleEvent(@nEvent,@mp1,@mp2 ) // J. Duijf 17-07-2014 Pass event parameters by refference
If ::keyhandlingcompleted
mp1 := 0
nEvent := xbe_None
Endif
Endif
//
ENDIF
ELSE
BREAK
ENDIF