@RWB Thanks for replying. The menu and response management part is sorted. I am following an MVC model. The menu screens (view functions) get called to output to the TFT according to the screen state (with a global int variable to control the screen or field shown or highlighted. Within the main controller function there is a check on key entry/press and then a nested series of switches structured according to the menu structure, each screen/field combination requires a function to handle the key entries and decide what to do; store in a buffer, remove last input to buffer, echo to screen, process the buffer, return to the previous menu/field. This also allows for validation of input fields; integer, float, date, time according to the field.
Not sure this is the most efficient way to do it but this ensures the main loop is not blocked. I could have done more Object stuff!!!
Regards the button, I have come to the conclusion I will need to write my own button widget object to sit on top of the mfGFX library and do the things that otherwise would clutter the main program.