Is there a way to log every gui event in Delphi?

Posted by awmross on Stack Overflow See other posts from Stack Overflow or by awmross
Published on 2011-01-11T00:10:56Z Indexed on 2011/01/12 23:53 UTC
Read the original article Hit count: 225

Filed under:

The Delphi debugger is great for debugging linear code, where one function calls other functions in a predictable, linear manner, and we can step through the program line by line.

I find the debugger less useful when dealing with event driven gui code, where a single line of code can cause new events to be trigerred, which may in turn trigger other events. In this situation, the 'step through the code' approach doesn't let me see everything that is going on.

The way I usually solve this is to 1) guess which events might be part of the problem, then 2) add breakpoints or logging to each of those events.

The problem is that this approach is haphazard and time consuming.

Is there a switch I can flick in the debugger to say 'log all gui events'? Or is there some code I can add to trap events, something like

procedure GuiEventCalled(ev:Event)
begin
    log(ev);
    ev.call();
end

The end result I'm looking for is something like this (for example):

FieldA.KeyDown 
FieldA.KeyPress 
FieldA.OnChange 
FieldA.OnExit 
FieldB.OnEnter

This would take all the guesswork out of Delphi gui debugging.

I am using Delphi 2010

© Stack Overflow or respective owner

Related posts about delphi