CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Blokada konkretnych klawiszy w polu Edit

Blokada konkretnych klawiszy w polu Edit

dział ogólny

Blokada konkretnych klawiszy w polu Edit

Nowy postprzez Przemyslav » sobota, 2 lipca 2016, 16:14

Witam ponownie wszystkich. Mam kolejny problem z polem Edit pod C++ Builder 6.0. Mam taki kod blokujący odpowiednie klawisze - pole Edit ma tylko przyjmować litery i znak specjalny "-":

KOD cpp:     UKRYJ  
void __fastcall TForm1::Edit16KeyPress(TObject *Sender, char &Key)
{
        // zabezpieczenie się przed wprowadzaniem w pole edit wartości innych niż litery i określone znaki specjalne
        if ((Key < 65 || Key > 90) && (Key < 97 || Key > 122) && (Key != 45) && (Key != VK_SPACE) && (Key != VK_BACK) && (Key != VK_DELETE) && (Key != VK_ESCAPE))
        {
                Key = 0;
                Application->MessageBox("Wprowadziłeś niedozwolony znak.\n""Dostępne są tylko litery oraz znak specjalny '-'.", "Błąd", MB_OK | MB_ICONERROR);
        }
}


Jednak nie przewidziałem polskich liter, typu Ń, ń. Kombinowałem z pomocą strony: https://pl.wikipedia.org/wiki/Kodowanie_polskich_znak%C3%B3w, dodając warunek np. ń + Alt:

KOD cpp:     UKRYJ  
(Key != 241) && (Key != VK_MENU)


Jednak program nie przyjmuje go. Czy jest jakiś sposób na polskie znaki?
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: Blokada konkretnych klawiszy w polu Edit

Nowy postprzez polymorphism » sobota, 2 lipca 2016, 18:28

Jest sposób nie tylko na polskie znaki, ale na wszystkie:
KOD cpp:     UKRYJ  
setlocale(LC_CTYPE, ".ACP"); //<--- daj gdzieś w konstruktorze głównej formy; <locale.h>
...

if ( Key != VK_SPACE &&
        Key != VK_BACK &&
        Key != VK_DELETE &&
        Key != VK_ESCAPE &&
        !isalpha((unsigned char)Key) &&  //  <ctype.h>
        Key != '-' )
{
        Key = 0;
        Application->MessageBox("Wprowadziłeś niedozwolony znak.\n""Dostępne są tylko litery oraz znak specjalny '-'.", "Błąd", MB_OK | MB_ICONERROR);
}
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Przemyslav
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Blokada konkretnych klawiszy w polu Edit

Nowy postprzez Przemyslav » sobota, 2 lipca 2016, 19:17

Zgłaszam, iż działa bez problemowo ;) Zapisuję do szablonów, Dziękuję bardzo :)
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 57 gości

cron