TShiftState abfragen



  • Hi,
    Ich möchte abfragen, ob auf ein Element mit der Mouse doppelt geklickt wurde. Ich wollte dies so machen:

    void __fastcall TMainForm::ProcessRichEditMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       if(Shift == ssDouble)
       {
          ...
       }
    }
    

    jetzt erhalte ich jedoch folgende Fehlermeldung:

    [C++ Fehler] Unit1.cpp(155): E2094 'operator==' ist im Typ 'TShiftState' für Argumente des Typs 'Classes__1' nicht implementiert

    Wie kann ich sonst einen Doppelklick abfragen?



  • TShiftState ist ein Set d.h. es kann mehrere Elemente beinhalten. Mit der Methode Contains() kann man ermitteln, ob ein bestimmtes Element enthalten ist.

    void __fastcall TMainForm::ProcessRichEditMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       if(Shift.Contains(ssDouble))
       {
          ...
       }
    }
    


  • Probiers mal so:

    if(Button==ssLeft)
    {
    }
    


  • Entschuldigung, verschrieben:

    if(Button==ssDouble)
    {
    }



  • if(Shift.Contains(ssDouble)) funktioniert bestens, danke schön.
    if(Button == ssDouble) funktioniert nicht, Button enthält bei mir immer nur mbLeft


Anmelden zum Antworten