tldr.. I really do not know where and how the name convention of this prefix uppercase T really comes and how it should work.
It's quite easy: the "Txxx" convention to name a type (as well as "Pxxx" to mean a pointer) comes from as far back as Turbo Pascal (it was Borland's convention) and Borland/CodeGear/Embarcadero have kept it alive through the years.
In the begining, it came about because objects used to be accessed mainly through pointers, so you'd have an object
Something of type
TSomething, accessed thorugh a pointer
PSomething. So it's an historical artifact become a "convention", just as much as Microsoft's "hungarian notation"--and in fact can be seen as a simplification of that.
There's a document at Embarcadero (though I don't have the URI, sorry) explaining this and other conventions in
their code which has become through the years
the "standard" for almost all Pascal programmers.
Note that it's mostly used for non-intrisic, non-simple types (and yes, while it's forced as the "ancestor" of all classes TObject is neither of that and is declared, IIRC, in the unit Classes).
Ancient types (integer, char, etc.), of course, are part of the base (mostly Wirth's) language and follow no such convention, hence aliases and related types don't follow it either, much less "C" derived types.