Podmiana wartości (kodu) klawiszy w komponencie MaskEdit

0

Witam,
w komponencie TMaskedit ustawiłem aby można było wpisać wartości liczbowe postaci: 1,12345.
Gdy zostaje skasowana jakaś wartość np 1,2345 po wpisaniu do Bazy danych otrzymuje błąd.
Chciałbym aby po naciśnięciu klawisza Backspace oraz Delete w danym miejscu pojawiła się wartość '0' zamiast '
'.
Poniższy kod nie działa.

 

procedure TForm_Edycja.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin

  if Key = #08  then
  begin
    Key := #30;
  end;

end;

Proszę o pomoc w rozwiązaniu tego problemu.

0

Próbowałeś przypisać do pod keyup/keydown?

0

Tak, ale to nic nie daje.

2

Jedno z:
1.

Key:='0';
Key:=#48;
Key:=#$30;

Padłeś ofiarą magicznych liczb.

1

W Object Inspectorze twojego MaskEdita masz jeśli dobrze pamiętam coś takiego jak EditMask, gdzie możesz zmienić domyślny character for blanks z _ na 0. Przynajmniej w D2007 coś takiego było.

4

@lukasz_p92 - najpierw pasowało by sprawdzić kody klawiszy, zanim weźmie się za pisanie kodu i jego testowanie; Mocno uogólniając, wszystkie kody od 0 do 127 są uniwersalne, zawarte w zbiorze znaków ASCII; Kody znaków odpowiadające cyfrom znajdują się w zakresie od 48 (cyfra 0) do 57 (cyfra 9); Teraz można już przystąpić do pisania kodu;

Można wybrać zdarzenie OnKeyPress, bo znak BS (backspace) jest przez to zdarzenie obsługiwany - DEL również; Ja jednak proponuję zdarzenie OnKeyDown i skorzystanie ze stałych VK_BACK (lub jeśli dostępny to VK_BACKSPACE), VK_DELETE i VK_0, ze względu na czytelność; W argumencie dostaje się od razu kod znaku, więc nie trzeba kombinować i zaciemniać kodu gołymi numerkami:

if Key in [VK_BACK{SPACE}, VK_DELETE] then
  Key := VK_0;

Jeśli jednak wolisz podawać gołe liczby w OnKeyPress z prefiksem # to patrz na zapis tych liczb; Nie pamiętam jak to wygląda w Delphi, jednak pod FPC możliwe jest podanie kodu znaku w czterech systemach liczbowych:

Key := #48;       // decymalny
Key := #$30;      // heksadecymalny
Key := #&60;      // oktalny
Key := #%110000;  // binarny

W Delphi trzy pierwsze na pewno są dozwolone, z binarnym nie pamiętam, a jak jest w nowym - nie wiem, nie używam; W każdym razie wybierz sobie jeden system liczbowy i jego używaj; Póki co, na początek polecam dziesiętny, bo nie ma prefiksów i nie będzie się myliło;

PS: Highlighter kodu nie trawi już oktalnego... :]

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