Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Keypress u C++ Builderu - kombinacija dviju tipki

[es] :: C/C++ programiranje :: Keypress u C++ Builderu - kombinacija dviju tipki

[ Pregleda: 2532 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Keypress u C++ Builderu - kombinacija dviju tipki25.02.2006. u 16:54 - pre 221 meseci
Pozdrav,

evo imam jedan problem. Uključio sam datoteku Qt.hpp što mi je omogućilo upotrebu tipku u keypress eventu i sastavio sam kod:

Code:

                if (Key == Key_1){
                        frmMain->Caption = "www";
                }


Sve je to ok, ali kako ću izvest kombinaciju dviju tipki? Npr. kako ću izvesti da se izvrši neki kod ukoliko se sticne CTRL + 1?

Hvala
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Keypress u C++ Builderu - kombinacija dviju tipki25.02.2006. u 17:13 - pre 221 meseci
Zato ce ti Qt.hpp? To ti uopste ne treba za hvatanje OnKey...() dogadjaja.

Qt je CLX biblioteka u povezana je sa Linux-om.

Ako ti treba samo hvatanje nekog tastera koji je povezan sa nekim od sistemskih
tastera za modifikovanje (Ctrl, Alt,Shift), onda mozes ovako:

Code:

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if ( Shift.Contains( ssCtrl ) )
   {
      if ( Key == '1')
      {
         ShowMessage( "CTRL+1" );
      }   
   }
}


A, ako ti treba stvarno vise tastera, onda mozes ovako:

Code:

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Key81Pressed = false; // Q
   Key87Pressed = false; // W 
   Key69Pressed = false; // E
}

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if ( !Key81Pressed && Key == 'Q' )
      Key81Pressed = true;

   if ( !Key87Pressed && Key == 'W' )
      Key87Pressed = true;

   if ( !Key69Pressed && Key == 'E' )
      Key69Pressed = true;

   if ( Key81Pressed && Key87Pressed && Key69Pressed )
   {
      Key81Pressed = false;
      Key87Pressed = false;
      Key69Pressed = false;
      ShowMessage( "Q+W+E je pristisnuto!" );
   }
}

void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if ( Key == 'Q' ) Key81Pressed = false;
   if ( Key == 'W' ) Key87Pressed = false;
   if ( Key == 'E' ) Key69Pressed = false;
}



U svakom slucaju, savetujem ti da property KeyPreview postavis na true:
Code:

KeyPreview = true;

...sto mozes uraditi i u ObjectInspector-u. Ovo ce ti omoguciti hvatanje dogadjaja
OnKey...() na glavnoj formi cak i kada je prekrivena nekim drugim objektima koji u
sebi takodje imaju OnKey...() dogadjaj i trenutno su fokusirani.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Keypress u C++ Builderu - kombinacija dviju tipki

[ Pregleda: 2532 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.