@olesio pytający ma inny problem. Okazuje się, że próba pisania literki ą powoduje dwa działania. Pierwsze zaznaczenie całości, drugie to wpisanie literki ą. A jak mamy zaznaczoną całość, to jest nadpisywana zawartość całego pola.
Działanie takie związane jest z tym, że w układzie klawiatury programisty litery z ogonkami piszemy poprzez prawy alt. Poczytajmy zatem nieco o tym klawiszu na wiki https://pl.wikipedia.org/wiki/AltGr
W innych układach klawiatury, przede wszystkim typowym układzie amerykańskim, prawy klawisz Alt pełni funkcję identyczną jak lewy. W systemie Windows przy układzie klawiatury „Polski programisty” AltGr odpowiada kombinacji klawiszy Ctrl + Alt, co jest niekiedy kłopotliwe, gdyż w niektórych aplikacjach, sterownikach i skrótach programów znajdujących się na pulpicie zdefiniowane są skróty klawiaturowe Alt+Ctrl+litera. Na przykład zdefiniowanie skrótu Alt+Ctrl+S może uniemożliwić wpisywanie małej litery „ś”. Dotyczy to m.in. niektórych modeli komputerów stacjonarnych HP, na których fabrycznie instalowany jest program narzędziowy korzystający z takiego właśnie skrótu.
Rozwiązaniem na to jest po prostu dołożenie odpowiedniego warunku. Wiem, że to dział Delphi, ale mam pod ręką swój kod spod C++ Builder'a pokazujący jak można to ominąć dla skrótu Crtl+S. Ale logika jest taka sama:
void __fastcall TfrmTowary::OnFormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch (Key)
{
case 'S':
{
if (Shift.Contains(ssCtrl)==true && Shift.Contains(ssAlt)==false)
{
frmHaslo = new TfrmHaslo(this,"qaz123");
int Res = frmHaslo->ShowModal();
if (Res == -1)
{
ShowMessage("Nieprawidlowe haslo!");
}
else if (Res == 1)
{
this->vAwaria();
}
}
break;
}
}