Borland C++ Builder, obsługa klawiszy

Borland C++ Builder, obsługa klawiszy
  • Rejestracja: dni
  • Ostatnio: dni
0

Cześć, uczę się programować w BCB i napotkałem problem, mianowicie chciałbym w moich programach użyć klawiatury, mam takie coś ale mi nie działa:

Kopiuj
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key == VK_CONTROL)
{
Edit1->Text=liczba;
}

if (Key == VK_SHIFT)
{
Edit1->Text=liczba2;
}
}
 

Co tu jest nie tak i jak zrobić żeby działało?

mychal
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Przedmonitorze Górne
0

Nie wiem jak to dokładnie jest w BCB, ale w Delphi stan klawiszy ctrl oraz shift sprawdzało się przez Shfit, nie Key. Nie mam ani delphi ani bcb aby to sprawdzić. Spróbuj ustawić pułapkę w tej funkcji i podejrzyj zmienną Shift.

  • Rejestracja: dni
  • Ostatnio: dni
0

Spróbowałem, taki efekt:

[C++ Error] Unit1.cpp(24): E2094 'operator==' not implemented in type 'TShiftState' for arguments of type 'int'

mychal
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Przedmonitorze Górne
0

http://www.delphigroups.info/3/9/162008.html
czyli TShiftState powinno mieć metodę contains. Np by sprawdzić czy jest wciśnięty Shift napiszesz:
if(Shift.contains(ssShift)){...}

  • Rejestracja: dni
  • Ostatnio: dni
0

Ehh...

Kopiuj
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Shift.contains(ssShift))
{
ShowMessage("Brawo Jasiu wcisnoles shifta");

}
}

i otrzymuje komunikat:

[C++ Error] Unit1.cpp(21): E2316 'contains' is not a member of 'TShiftState'

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.