Вот еще два кода, которые пишут первую букву - заглавной, остальные строчными в независимости от выделения и Shift'а (оба кода рабочих):
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
s: string;
begin
s := Edit1.text;
if length(s) > 0 then
begin
Edit1.SetFocus;
Edit1.SelStart := length(s);
Edit1.text := AnsiUpperCase(Copy(s, 1, 1)) + AnsiLowerCase(Copy(s, 2, length(s)));
end;
end;
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
s: String;
begin
s := Key;
if Edit1.SelStart = 0 then
s := AnsiUpperCase(s)
else
s := AnsiLowerCase(s);
Key := s[1];
end;