So, to start, there are two different "topic events" which mIRC looks for. There's the RAW 332 333 combo, and the TOPIC event itself. When you hide topic events, mIRC will ignore both of these.
When you join a channel, you receive the numeric 332 which contains the topic message, and then 333 which contains the topic setter and date.
When somebody sets a topic in your presence, you'll receive a TOPIC event.
You can monitor the debug window by typing /debug -p @debug to see these activities and what they look like.
It sounds like you only want to see the TOPIC events as they happen, but want to hide the 332/333 numerics, so the easiest solution is to have mIRC hide topic events and then use the ON TOPIC script event to display your own with the /echo command.
If you want to get more fancy, you can try keeping a topic history of your channels and then only display the topic if it's new and not a repeat of an earlier topic. You can do this with file /write and $read(), or via hashtable /hadd and $hget().