Это правильно, подскажите?
Как минимум, нужно строку заголовка формировать заново, иначе у Вас он будет постоянно увеличиваться после нескольких нажатий на клавишу, т.е. в case достаточно "caption := Key + ...".
Второе, заголовок в задании начинается с "Код виртуальной клавиши", и третье, лучше завести локальную переменную string, сформировать ее, а затем присвоить caption, сейчас заголовок формы 2 раза меняется за одну процедуру