Hi David;
The "over-ride" approach would work but .. you would have to over-ride the DW Control Print() method in every DC where its used. Then there is the question of the low level print command usage as well. Not to mention the ALT+PrintScreen or just PrintScreen aspects as well that can capture your PB Apps data for printing.
The problem sounds simple, but to do a proper job - it may require bits of coding in various places to really curtail this activity. All the way from disabling menu print items, capturing keyboard print activity, changing the default printer to a "Dummy" make sure nothing prints, etc.
I have done this before in a few Apps here in Canada where the Government App security (either Protected "B" or Protected "C") is required. Its certainly can be a bit of a challenge to not only shut down printing but also screen capture, export, CTRL+C, etc. The problem even gets more compounded in PowerServer where the App is webified. Now you also have to deal with the browser aspects as well.
Building a secure App is much easier when you design for it. Unfortunately, retrofitting for security will probably involve some refactoring in various areas of your App.
Regards ... Chris
For global system functions you have to write your own global function with same name and parameters as the system function.
FYI: Events are processed by the PBVM TOP to Bottom in the inheritance tree. So over-riding their behaviour in a higher level ancestor makes sense and is "Doable" However, the App could have "Over-Ridden" the event at the concrete level already - so you still may require "concrete" level object class changes.
Functions are processed by the PBVM Bottom to Top thus, an over-ride could have already been done anywhere in the object class's inheritance hierarchy already. So it tougher here to use a high level ancestor for controlling behaviour as road blocks may already be present in lower level descendants whose code is executed first.
Regards ...Chris