Mouse Button



  • Hi,

    ich moechte, das ein Ereignis stattfindet, wenn ich den linken Mausbotton druecke. Habe dafuer den folgenden Code:

    void __fastcall TForm1::OpenGL1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
            if(ssLeft){
            enabled = true;
            last_x = X;
            last_y = Y;       }
    }
    

    Das Ereignis findet aber auch statt, wenn ich den rechten Mousebotton druecke??? Was ist daran falsch???



  • Joerg van Robb schrieb:

    Das Ereignis findet aber auch statt, wenn ich den rechten Mousebotton druecke??? Was ist daran falsch???

    Hi,
    schau mal in der Hilfe nach TMouseButton! Dürfte dir helfen!

    MFG

    Alexander Sulfrian

    Edit:
    Zitate bitte auf das Notwendigste beschränken. Danke!
    -Jansen



  • Joerg van Robb schrieb:

    Das Ereignis findet aber auch statt, wenn ich den rechten Mousebotton druecke??? Was ist daran falsch???

    du kontrollierst doch nur den ShiftState, und nicht, welcher Button gedrückt wurde (TMouseButton Button)



  • und ausserdem ist TShiftState ein Set. da kannst du nur mit Contains auf die enthaltenen Elemente zugreifen!

    // linke maus wird gedrückt gehalten
    if (Shift.Contains(ssLeft))
    {
    }
    


  • Genau wie Sunday es gesagt hat, habe ich es nun auch gemacht und hinbekommen.
    Danke.



  • Üblicherweise würde man hier einfach die Button-Variable auf mbLeft prüfen, wie von Alexander angedeutet. Der ShiftState wird nur ausgewertet, wenn du prüfen willst, ob mehr als ein Button gedrückt ist oder ob es einen Doppelklick gab.



  • Joerg van Robb schrieb:

    Hi,

    ich moechte, das ein Ereignis stattfindet, wenn ich den linken Mausbotton druecke. Habe dafuer den folgenden Code:

    void __fastcall TForm1::OpenGL1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
            if(ssLeft){
            enabled = true;
            last_x = X;
            last_y = Y;       }
    }
    

    Das Ereignis findet aber auch statt, wenn ich den rechten Mousebotton druecke??? Was ist daran falsch???

    Das hat doch mit TShiftState nichts zu tun! Richtig wäre es so:

    void __fastcall TForm1::OpenGL1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       if(Button == mbLeft)
       {
          enabled = true;
          last_x = X;
          last_y = Y;       }
       }
    }
    


  • Unnötige Full-Quote, bereits gegebene Informationen wiederkäuen und dann auch noch eine "Komplettlösung" - das machst du mit Absicht, oder? 😉


Anmelden zum Antworten