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?