ButtonDown dauerhaftes ereignis (erledigt)



  • Hi!

    Ich hab einen Button mit dem Ich einen Wert um 1 Hochzähle.
    Dies Passiert bei MouseDown!

    Jezt wir dabei aber nur 1x +1 gerechnet. Warum??

    Ich will sollange hochzählen lassen wie ich auf den Button drücke!
    Dabei soll meine Form auch immer aktuell gehalten werden!

    Ich habs versucht mit einer While-chleife!

    while(buttondown==true)
    {
    }

    Und wenn das Event MouseUp kommt wird buttondown=false gesetzt.
    Leider hängt sich das programm dann in der schleife auf!

    :<
    wie könnte ich das geschickter lösen?
    Die Schleife befindet sich in einer eigenen Funktion...



  • Warum nimmst Du nicht ein SpinEdit? Findest Du unter dem Komponentenreiter Beispiele als CSpinEdit.



  • was macht das anders ???

    es muss doch aber auch irgendwie mit dem buttton un den events gehen oder??



  • Du könntest bei MouseDown einen Timer starten der das Hochzählen übernimmt.



  • Timer macht keinen sinn,

    da ja ständig das fenster aktualliesiert werden solL! und bei jeder aktuallisierung +1 gerechnet werden soll....

    solange wie halt der button down! :< muss doch gehen oder?

    nich?



  • Wieso macht ein Timer keinen Sinn?

    Mir fällt keine Lösung ein, die ohne einen Timer auskommt.



  • Hi,

    int i = 0;
    bool down = false;
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    down = true;
    while (down && Shift.Contains(ssLeft))
    {
            Edit1->Text = IntToStr(i);
            i++;
            Application->ProcessMessages();
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1MouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    down = false;
    }
    //---------------------------------------------------------------------------
    

    ... das is aber rasend schnell, also um Punktgenau eine Zahl zu treffen sollte man schon ein sehr hohes Reaktionsvermögen haben! Ich würde auch den Timer bevorzugen.

    mfg, Micha!

    //Edit: das ganze lässt sich natürlich durch z.B. Sleep(100) verlangsamen!



  • THX!

    Das funtz wunderbar 😃
    So hab ich mir das gedacht 😉
    nich mit timer 😃


Anmelden zum Antworten