Why do you use numeric values for the HitPositions? This is not good programming style, you get much better readability if you use the enumerated values. And do you really understand what you are doing?
THitPosition is an enumeration, i.e. named values for the bits of an integer. The first enumerated value (hiAbove in THitPosition) corresponds to the right-most bit and thus has the value 1. The fourth value (hiOnItem) has the numeric value 2^(4-1) = 8. The easiest way to calculate this is by shifting the 1 to the left by as many bits as specified by the ord value of the enumeration element., i.e. 1 shl (ord(hiOnItem). Although being the fourth bit, hiOnItem has the ord value of 3 because counting starts at 0.
But forget about the numerical values, the compiler takes care of it.
THitPositions (plural!) is a set, i.e. an unordered combination of the enumerated value. In the bit representation each included set element corresponds to a bit switched to its ON state. If the first and fourth elements are included (hiAbove and hiOnItem) then the value of the set is 1+8 = 9. This is the reason why you are seeing "undocumented" values. You can get the numerical value of the set by casting the set to an integer: "integer(HitInfo.HitPositions)"
Again, forget about the bits, use the features of the Pascal language instead:
In order to check whether a HitPosition is included in the set you just use the "in" operator: "if hiAbove in HitInfo.HitPositions". In the "bit-world" you must not check for equality because other bits can be set as well, i.e. don't do "if 1 = HitInfo.HitPositions", but use an AND operation to mask out the 1st bit: "if 1 and integer(HitInfo.HitPositions <> 0"
If several values are included in the set, e.g. hiOnItem and hiOnItemLabel as it happens when you click on a node text, the you can check whether the intersection of the sets [hiOnItem, hiOnItemLabel] and HitPositions is not empty; the intersection operation has the symbol '*' in Pascal, i.e. "if [hiOnItem, hiOnItemLabel] * HitInfo.HitPosition <> []".
You hopefully understand now why the Pascal way has better readability, is better to understand and less error-prone.
See the attached demo program which checks the HitPositions after each click into a simple virtualtree. It displays the numeric values as well.