przenoszenie kursora z MaskEdit do MaskEdit

0

Mam kilkanaście MaskEdit ustawionych w szeregu jeden obok drugiego. Każdy ma ustawioną maskę: '>L;1;_' .Jak widać maska zezwala na wpisanie tylko jednej litery. Ponieważ chciałem aby po wpisaniu litery kursor przenosił się samoczynnie (bez użycia tabulatora) to kolejnego okienka MaskEdit, użyłem procedury:

procedure TForm1.MaskEdit1Change(Sender: TObject);
begin
MaskEdit2.SetFocus;
end;
(i tak dla każdego MaskEdit (z wyjątkiem ostatniego).)

Działa to tak jak chciałem, <ort>dopuki</ort> nie użyję klawisza DELETE lub BACKSPACE celem skasowania błędnie wpisanej litery...wówczas wyskakuje komunikat debugera: "invalid input value".
Może ktoś zna sposób rozwiązania.
Ewentualnie inny sposób na przesuwanie kursora

0

Może zrób zabezpieczenie:

if (length(MaskEdit1.Text)=1) then MaskEdit2.SetFocus();
0

Też wyrzuca błąd, niestety

0

Jakimś rozwiązaniem może być to:

if (length(MaskEdit1.Text)=1) and (MaskEdit1.Text<>' ') then MaskEdit2.SetFocus();

Ale pamiętaj, że nawet jak nie masz żadnej obsługi

OnChange

dla MaskEdit, a przy takiej masce jaką masz wciśniesz kolejno klawisze [DELETE], [ENTER], to i tak będziesz miał komunikat o błędzie wprowadzania danych.

0

teraz działa dobrze.
A dla DELETE + ENTER przydałby sie kod obsługi błędu

1 użytkowników online, w tym zalogowanych: 0, gości: 1