• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

(Int) kontra pole Edit w Borlandzie C++

Object Storage Arubacloud
0 głosów
652 wizyt
pytanie zadane 28 września 2015 w C i C++ przez juriiw Gaduła (3,470 p.)
Witam!

Czy da się z automatu ograniczyć wprowadzanie znaków w polu Edit, tylko do int-ów. Może podam przykład...

Mam pole Edit, w które wpiszę minuty, np.: 60 lub 99. Ustawiam więc MaxLength = 2. Następnie chciałbym aby to były tylko cyfry (jako znaki), a nie litery alfabetu lub znaki białe. Czy jest droga na skróty, np. poprzez ObjectInspectora? Czy muszę pisać funkcję sprawdzajacą wprowadzony znak do Edit? Jeśli na piechotę, to czy najlepiej to zrobić dla zdarzenia: OnChange, OnKeyDown czy OnKeyPress?

3 odpowiedzi

0 głosów
odpowiedź 28 września 2015 przez Krawiec91 Pasjonat (19,600 p.)
wybrane 28 września 2015 przez juriiw
 
Najlepsza

Moim zdaniem, najlepiej będzie dla zdarzenia OnKeyPress. Poniżej masz przykład obsługi zdarzenia OnKeyPress, który używałem w jednym w swoich programów, aby ignorowało wpisywanie danych innych niż liczby do pola Edit.
 

void __fastcall TForm1::E_XminKeyPress(TObject *Sender, char &Key)
{
        if (!(isdigit(Key) || Key == VK_BACK || Key == DecimalSeparator || Key==45))
        {
                Key = 0;
        }
        else
        {
                if ((Key == DecimalSeparator) && (E_Xmin->Text.Pos(DecimalSeparator) > 0))
                {
                Key = 0;
                }
        }
}

 

0 głosów
odpowiedź 28 września 2015 przez event15 Szeryf (93,790 p.)
Myślę, że napisanie prostej funkcji sprawdzającej czy value czy tam text tego edita jest liczbą to nie problem. Gotowca nie pamiętam, zeby było. OnChange zadziała po napisaniu tekstu i wyjściu z tegoż elementu. OnKeyDown zareaguje w momencie kiedy naciśniesz przycisk i jeszcze zanim zostanie wysłany do edita OnKeyPress spowoduje, że znak się juz tam wyświetli - przynajmniej tak to pamiętam.
0 głosów
odpowiedź 28 września 2015 przez maly Nałogowiec (37,190 p.)
SetWindowLong(Edit1->Handle, GWL_STYLE, GetWindowLong(Edit1->Handle, GWL_STYLE) | ES_NUMBER);

 

Podobne pytania

0 głosów
1 odpowiedź 633 wizyt
pytanie zadane 8 grudnia 2015 w C i C++ przez mikra25 Użytkownik (580 p.)
0 głosów
0 odpowiedzi 107 wizyt
0 głosów
1 odpowiedź 190 wizyt
pytanie zadane 11 lipca 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)

92,573 zapytań

141,423 odpowiedzi

319,647 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...