О чем вообще можно было тут так много говрить, алгоритм простой до безобразия.
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['A'..'Z', 'a'..'z'] then
key := #0
else if (Length((Sender as TEdit).Text) = 0) and (key in ['а'..'я']) then
key := chr(ord(key) - 32);
end;