Dazwischen wird
IMHO TranslateMessage aufgerufen.
Das heißt, aus der gedrückten Taste 65 (A) wird erstmal nachgeschaut ob Umschalt gedrückt ist, wenn ja kommt ein #65 ('A') raus, ansonsten ein #97 ('a'). Das heißt in OnKeyPress hat man den Char, der ins Edit kommen würde und in OnKeyDown den virtuellen Tastencode (nachzuschlagen unter
Virtuelle Tatencodes, ja, Tatencodes ohne s, zumindest in Delphi 7 bei mir.
)