Witam, prosiłbym o jakąś podpowiedź jak mogę w okienku TEdit liczbę np. milion zgrupować jak w kalkulatorze windowsa? (1 000 000)
Niby mogę sprawdzać w onkeypress i dodawać/odejmować spację zależnie od tego co użytkownik wpisze, jednak przy kopiowaniu przez użytkownika grzebanie w schowku i usuwanie spacji wg mnie mija się z celem.
Użyj TMaskEdit
i sam zdefiniuj sposób formatowania.
Nawet fajna opcja te ustalanie własnego formatu. Jednak dalej jak ustawię go własny przy kopiowaniu zawartości i przeklejeniu mam spacje między wartościami. Zmieniając w inspektorze obiektów maxlenght(lazarus) na większą to automatycznie mi wraca wartosc maxlength do sposobu formatowania. Czyli mam tutaj dalej problem ze spacjami i doszedł problem ograniczonej ilości znaków w zamian za eliminację problemu formatowania. Czyli faktycznie pozostaje mi tylko modyfikacja schowka?
Hmm… no na to wygląda, choć zbyt wielkiego doświadczenia z tą kontrolką nie mam.
Wywalenie białych znaków z ciągu nie jest trudne – wystarczy jedno wywołanie StringReplace
. Ja wiem, nie jest to zbyt wygodne, ale cóż… jeśli kontrolka nie chce współpracować, to nic innego nie pozostaje.
Edit: Choć z drugiej strony, TMaskEdit
posiada przydatne chronione metody, które przetwarzają ciąg znaków aplikując lub usuwając z niego maskę. Mowa tutaj o:
protected
procedure SetTextApplyMask(Value: TCaption);
procedure GetTextWithoutMask(Value: TCaption): TCaption;
Chociaż te sprawiają wrażenie, jakby nie działały. :D
Samo wklejanie danych ze schowka nie jest problematyczne – kontrolka poprawnie formatuje zawartość. Problemem jest kopiowanie tekstu, bo kontrolka nie uwzględnia maski. Tutaj trzeba by się podpiąć i zmodyfikować ciąg, tuż przed wrzuceniem go do schowka.