Funktion, für die Postion eines Mausklicks



  • Hi, ich habe mal wieder eine Frage:

    Gibt es vom Borland C++ Builder eine Funktion, die den nächsten Mausklick abfängt (so dass KEINE andere Funktion aufgerufen wird (wie on MouseDown)), und die Position dieses Mausklicks als Rückgabewert zurückgibt. Die Funktion soll also praktisch so lange warten, bis der Anwender klickt, und dann die Position des Klicks zurückgeben, aber die Auslösung einer anderen Funktion durch dieses einen Mausklick verhindern.

    Schonmal Danke

    Felix



  • hallo Phoemuex!

    also ich könnte mir vorstellen, dass es wie folgt geht:

    du schreibst eine funktion

    MyFormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
    

    , die denselben kopf hat, wie eine Ereignisbehandlungsroutine des Builder, und die weist du zu gegebener zeit dem OnMouseDown deiner Form zu.
    Damit keine weiteren Aktionen ausgeführt, würde ich alle anderen Funktionen, die auf Mausclicks reagieren NULL setzen, a la OnDblClick = NULL usw.
    Die Position des Clicks wird dir dann über die Parameter X und Y übermittelt.

    Ich hoffe, das klappt 😉

    der oli



  • Nein, das geht nicht, ich muss nämlich die Funktion aus einer anderen Funktion heraus aufrufen. Die aufgerufene Funktion muss dann solange warten, bis der Anwender klickt und dann müssen die Koordianten des Punktes zurückgegeben werden. Die anderen Funktionen darf ich nicht auf NULL setzen, weil die ja sonst nie aufgerufen werden können. (Es also keine Ereignisse gibt, oder ich jedenfalls nicht mehr auf die Ereignisse reagieren kann)

    Felix



  • Das funktioniert mit dem Event-System des BCB nicht, bzw. so funktioniert das System nicht

    Warum reagierst du nicht einfach auf das MouseDown-Event und wertest die Koordinaten aus? Was soll das mit der Warterei?



  • Ok, ich habe das Problem jetzt über eine globale Variable gelöst.
    Die wird gesetzt, wenn gewartet werden soll und dann überprüft die Methode von dem Maus-Event, ob die gesetzt ist. Ich wollte das halt eigentlich ohne eine globale Varibale hinkriegen, aber irgendwie scheint das ja nicht zu gehen.

    Trotzde Danke

    Felix


Anmelden zum Antworten