Tasten Sperren



  • Ich benutze für mein Menü verschiedene Tasten

    Spiel Starten - S
    Levelauswahl - L
    Optionen - O
    Hilfe - F1

    Ist ja alles schön und gut, aber wie kann ich die Taste S sperren wenn ich grade in der Hilfe drin bin?
    Ich habe in der Suchfunktion nichts gefunden...

    gruß stetze



  • Hallo

    Tasten sperren kannst du nicht. Da kannst aber die Verarbeitung von Tasten verhindern, je nachdem wie du die Hotkeys in deinem Programm umgesetzt hast.

    bis bald
    akari



  • So hab ichs gemacht...

    void __fastcall Tcarrace::FormKeyPress(TObject *Sender, char &Key)
    {
       // Bei Druck der Tasten 'q' oder 'Q' wird das Spiel beendet
       if(Key=='q' || Key=='Q')
       {
          // Aufruf einer MessageBox mit Ja, Nein
          if (Application->MessageBox("Willst du das Spiel beenden?", "Beenden",
          MB_YESNO + MB_ICONQUESTION + MB_TOPMOST) == IDYES)
          {
             // Bei Ja, wird das Spiel beendet
             Close();
          }
          else
          {
            // Bei Nein passiert nichts...
          }
       }
       // Bei Druck der Tasten 's' oder 'S' wird das Spiel gestartet
       if(Key=='s' || Key=='S')
       {
          pn_spielinfos->Visible=true;
          pn_spielfeld->DoubleBuffered=true;
          pn_spielfeld->Visible=true;
          Spielzeittimer->Enabled=true;
          Punktezaehler->Enabled=true;
    
          // Das Menü wird ausgeblendet, der zurück Button wird eingeblendet
          menue_ausblenden(hintergrundbild, starten, levelauswahl, optionen, hilfe,
          beenden, zurueck, highscore);
    
          hilfe->Visible=true; // Die Hilfe wird weiterhin angezeigt
       }
    


  • Habs hinbekommen, einfach noch gemacht das die Tasten nur gehen wenn der Button auch sichtbar ist 🙂

    // Spiel beenden
       if((Key=='q' || Key=='Q') && (beenden->Visible==true)) // Wenn q, oder Q gedrückt...
       {
          // Aufruf einer MessageBox mit Ja, Nein
          if (Application->MessageBox("Willst du das Spiel beenden?", "Beenden",
          MB_YESNO + MB_ICONQUESTION + MB_TOPMOST) == IDYES)
          {
             // Bei Ja, wird das Spiel beendet
             Close();
          }
          else
          {
            // Bei Nein passiert nichts...
          }
       }
       // Spiel Starten
       if((Key=='s' || Key=='S') && (starten->Visible==true)) // Wenn s, oder S gedrückt...
       {
          pn_spielinfos->Visible=true; // Zeit, Punkte werden angezeigt
          pn_spielfeld->DoubleBuffered=true; // Puffer für Spielfeld an
          pn_spielfeld->Visible=true; // Spielfeld wird eingeblendet
          Spielzeittimer->Enabled=true; // Timer Zeit ist an
          Punktezaehler->Enabled=true; // Timer Punkte ist an
    
          // Das Menü wird ausgeblendet, der zurück Button wird eingeblendet
          menue_ausblenden(hintergrundbild, starten, levelauswahl, optionen, hilfe,
          beenden, zurueck, highscore);
    
          hilfe->Visible=true; // Die Hilfe wird weiterhin angezeigt
       }
    

Anmelden zum Antworten