Problem mit OnClick Ereignis



  • Hi,

    Ich hab ein Problem mit RadioGroup und zwar wird das OnClick Ereignis nicht nur beim Anklicken ausgeführt sondern auch noch bei Änderungen der RadioButtons (z.B. wenn ich dem Itemindex einen wert zuordne).

    Das bereitet mir jetzt einige Probleme, da es dabei auch keine Maus Abfragen gibt, wollte ich mal fragen ob es ne andere möglichkeit gibt, das der eingetragene quelltext im onClick ereignis auch nur bei Klick ausgeführt wird.



  • Hallo,
    mit bool wirklichklicken, und ner if-Abfrage in onClick (if(wirklichklicken) Code in onClick ausführen, andernfals ignorieren. Nurnoch wirklichklicken false vorm ändern des ItemIndexes setzen und alles sollte hinhauen.

    PS: sorry für meine Ausdrucksweise
    Gruß



  • die idee hab ich auch schon gehabt. ich hab nur keine ahnung was ich für wirklichklicken hin schreiben soll.



  • Hallo,
    na zB AllowClick, wichtig ist das es eine bool Variable ist (bool AllowClick; muß dann in private stehen).
    Ach und nach den ändern solltest du AllowClick auf true setzen.
    Gruß



  • http://groups.google.com/group/borland.public.cppbuilder.vcl.components.using/browse_thread/thread/57aaaf6511673518/9f2a91552c677f6f?&hl=en#9f2a91552c677f6f

    Die zweite Lösung ist prinzipiell vergleichbar mit dem Vorschlag von daniel23, nur dass eben schon das Auslösen des Events nach Bedarf gesteuert wird, anstatt im Event auszuwerten.



  • woher bekomm ich denn den den bool wert?

    wenn ich z.B. sowas hier schreibe:

    bool MouseClick:
    
    void __fastcall TForm_Dimmer::RadioGroup1Click(TObject *Sender)
    {
            if(MouseClick)
            {
                    Edit1->Text="test";
            }
    }
    

    dann wird der niemals in die if anweisung gehen.



  • Hallo,

    bool MouseClick: // muß in private   und in onCreate muß MouseClick = true; sorry
    
    void __fastcall TForm_Dimmer::RadioGroup1Click(TObject *Sender)
    {
            if(MouseClick)
            {
                    Edit1->Text="test";
            }
    }
    


  • bool MouseClick = true:
    
    void __fastcall TForm_Dimmer::ButtonClick(TObject *Sender)ix
    {
      MouseClick = false;
      RadioGroup->Items[x] = true // Pseudo-Code!
      MouseClick = true; // wichtig!
    }
    
    void __fastcall TForm_Dimmer::RadioGroup1Click(TObject *Sender)
    {
      if(MouseClick)
        MachWasWennNichtPerCodeAusgeloest();
    }
    

    Alternative:

    void __fastcall TForm_Dimmer::ButtonClick(TObject *Sender)ix
    {
      TNotifyEvent CurrentClick = RadioGroup1->OnClick;
      RadioGroup1->OnClick = 0;
      RadioGroup->Items[x] = true // Pseudo-Code!
      RadioGroup1->OnClick = CurrentClick; // wichtig!
    }
    
    void __fastcall TForm_Dimmer::RadioGroup1Click(TObject *Sender)
    {
      MachWasWennNichtPerCodeAusgeloest();
    }
    


  • Danke Jansen!!! 👍

    Damit kann man doch was anfangen! 😃


Log in to reply